2014-09-05 165 views
0

我正在嘗試在Laravel中爲動態URL創建一條路徑來加載特定的控制器操作。我能得到它的路線,使用下面的代碼控制器:將數據從routes.php傳遞給Laravel中的控制器

Route::get('/something.html', array('uses' => '[email protected]')); 

什麼我有麻煩搞清楚是怎麼從這個途徑向控制器傳遞變量。在這種情況下,我想將一個id值傳遞給控制器​​操作。

Laravel可能嗎?有沒有另一種方法來做到這一點?

+0

閱讀http://laravel.com/docs/routing#route-parameters你的'.html'後綴在你的網站中是否真的必要? – JofryHS 2014-09-05 10:48:49

+0

我沒看過。這裏沒有任何內容涵蓋了我想要做的事情。我試圖將未包含在URL中的信息傳遞給控制器​​。 .html後綴是我想盡可能保留下來的東西。 – 2014-09-05 11:08:07

+0

然後簡單地'POST'到你的路由,記住HTTP是無狀態的。 http://stackoverflow.com/questions/13200152/why-say-that-http-is-a-stateless-protocol – JofryHS 2014-09-05 11:26:58

回答

1

你沒有給我們足夠的信息,所以你需要問自己兩個基本問題:這些信息來自哪裏?你能不能通過routes.php文件傳遞你的控制器中的這些信息?

如果你要在你的'routes.php'文件莫名其妙地產生這樣的信息:

$information = WhateverService::getInformation(); 

你不能在這裏將它傳遞給你的控制器,因爲你的控制器是不是真的被這個文件中發射,這只是可用路線的列表,在某些時候可能會或可能不會被擊中。當路線被擊中時,Laravel將通過另一個內部服務發射路線。

但你可能將能夠使用的代碼非常相同的線在你的控制器:

class MyController extends BaseController { 

    function getView() 
    { 
     $information = WhateverService::getInformation(); 

     return View::make('myview')->with(compact('information')); 
    } 

} 

在MVC中,控制器會接收HTTP請求,併產生通過模型(或服務或repositores)信息傳遞給您的視圖,它可以產生新的網頁。

如果此信息是你在你的頁面有東西,你想它偷偷到你的something.html路線,使用POST方法,而不是GET的:

Route::post('/something.html', array('uses' => '[email protected]')); 

而且你的控制器內通過接收信息:

class MyController extends BaseController { 

    function getView() 
    { 
     $information = Input::get('information');  

     return View::make('myview')->with(compact('information')); 
    } 

} 
+0

你的方法的工作原理。我可以使用我正在使用的相同信息來確定是否需要該路線在我的控制器中工作。 – 2014-09-05 13:19:14

相關問題