2014-03-28 99 views
0

我剛剛在CodeIgniter之後開始使用Laravel,並且出現了一些讓我困惑的事情。Laravel4路由到帶參數的方法

我有一個PagesController它負責顯示靜態頁面,如關於,聯繫,隱私等'。

現在,我不想在我的PagesController上創建3-4個方法,我想創建一個名爲ShowPage($which) { }的方法,並知道要顯示哪個頁面。

的事情是>我無法理解的路線問題:

Route::get('about','[email protected]'); <--- I need to pass 'about' here 
Route::get('contact','[email protected]'); 
Route::get('about','[email protected]'); 

這是可能的,或者我應該需要爲這些情況每個人的方法?

這裏是我的確切代碼:

控制器:

class PagesController extends BaseController { 

    function showPage($which) { 
     echo $which; 
    } 
} 

路線:

Route::get('about','[email protected]'); 
Route::get('contact','[email protected]'); 
Route::get('about','[email protected]');` 

回答

0

您可以訪問路線直接在控制器內使用

switch(Request::path()){} 

解析爲約,聯繫等

另一種方式去了解它是使用

Route::get('{page}', '[email protected]'); 

這將傳遞變量控制器像

public function showPage($page){} 

但請注意,此路線將匹配任何路徑,

如果上面沒有其他匹配項。如果你使用http://example.com/about(或contact

// In your routes.php (This route will match only this route because of "where") 
Route::get('{page}','[email protected]')->where('page', 'about|contact'); 

它會工作,但與其他價值,它不會工作,換句話說,這條線路將不會匹配不about

+0

請求::路徑()是否有技巧=)謝謝 – Broshi

+1

這是一個壞主意,因爲頁面參數被傳遞給函數,那麼爲什麼他應該使用'Request :: path()'並且切換是完全不必要的。 –

0

他們已經被向下傳遞到方法:

public function ShowPage($which){ 
    switch($which){ 
    case 'about': 
     // do something 
     break; 
    case 'contact': 
     // do something else 
     break; 
    default: 
     break; 
    } 
} 
+0

Hmm..I只得到'缺少的PagesController :: SHOWPAGE()參數1' – Broshi

+0

你打電話的途徑之一時,得到它? –

+0

是的,看看我原來的問題上的代碼。 [更新] – Broshi

0

你可以試試這個或contact

然後在你的控制器,試試這個:

class PagesController extends BaseController { 
    public function showPage($page) { 
     // use $page, don't use use switch, $page will be either about or contact 
    } 
}