2013-03-23 172 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用此打電話

相關問題