2013-03-23 170 views
2

我有一个产品控制器和一个头控制器。加载产品控制器时,我使用Route :: forward()加载我的头控制器。如何将变量传递给Laravel中的另一个控制器

return View::make('frontend.catalogue.product.view') 
      ->with('head', Route::forward("GET", "frontend/page/head")); 

然后我就可以做回声出网页上的标题:

<?php echo $head; ?> 

简单。但是,我想将信息传递给产品控制器中定义的标题控制器,例如页面标题或元描述。

理想情况下,我要么能够传递一个数组到头部,要么有一个实例化的类,这两个路由请求都有权访问。

我试着在我的基础控制器构造函数中实例化一个库,但是这会在每个Route :: forward()请求中重新实例化,所以我设置的任何属性都无法在下一个前进中读取。

我能想到做到这一点的唯一方法是使用会话数据,但似乎并不是这样做的最佳方式。

头确实需要一个控制器,而不仅仅是一个View Composer的,因为它有它自己的模型等涉及

我知道Laravel没有做HMVC,这将是理想的解决方案,我知道有HMVC捆绑,但我很好奇你将如何处理这种Laravel的方式。

(使用Laravel 3.2 BTW)

回答

2

设法得到这个工作我多么希望。感兴趣的其他人:

而不是使用

return View::make('frontend.catalogue.product.view') 
      ->with('head', Route::forward("GET", "frontend/page/head")); 

我现在做的主要请求控制器如下:

$document = array(
     'meta_title' => 'My Title', 
     'meta_description' => 'My Description', 
    ); 

    // Output the view 
    return View::make('frontend.catalogue.category.view') 
        ->with('head', Controller::call('[email protected]', array($document))); 

,并在我的frontend/page/head控制器,我有以下几点:

public function action_index($document = array()) { 

     $meta_title = isset($document['meta_title']) ? $document['meta_title'] : 'Default Title'; 

     return View::make('frontend.page.head') 
       ->with('meta_title', $meta_title); 

} 

道具给Laravel IRC上的友好家伙h用此打电话

相关问题