2015-06-10 62 views
0

所以我有一個Laravel控制器(MainController.php)採用下面幾行:Laravel - 我可以通過規則控制路線嗎?

... 
public function _settings_a(){ 
    return view('_settings_a'); 
} 
public function _settings_b(){ 
    return view('_settings_b'); 
} 
public function _settings_c(){ 
    return view('_settings_c'); 
} 
public function _settings_d(){ 
    return view('_settings_d'); 
} 
public function _staff_a(){ 
    return view('_staff_a'); 
} 
public function _staff_b(){ 
    return view('_staff_b'); 
} 
public function _staff_c(){ 
    return view('_staff_c'); 
} 
... 

我的routes.php文件如下:

Route::any('_staff_a''[email protected]_staff_a'); 
Route::any('_staff_b''[email protected]_staff_b'); 
... 
etc. 

似乎有線路,有很多很多如果我改變了我的想法...

我想知道如果我可以在routes.phpMainController.php中有一個正則表達式用於處理以下劃線開頭的路由(_)?

任何Laravel專家都可以分享一些提示/建議嗎?我對這個框架很陌生。

回答

1

當然 - 只需將其添加爲參數即可。例如。像這樣:

Route::any('_staff_{version}', '[email protected]_staff'); 

public function _staff($version) { 
    return view('_staff_'.$version); 
} 
+0

我認爲這是我需要做的!我現在就試試這個... – Eamorr

+0

它的工作!謝謝。這是完美的。 – Eamorr

1

我不認爲你需要搞亂正則表達式。你可以使用隱式控制器Route::controller()這不是最好的解決方案,但會做我認爲你想要的。

所以不是

Route::any(..)

你可以做

Route::controller('url', 'MainController');

所以你到任何 '網址' 的路線是會送你到該控制器。用'/'跟隨它,然後在想要調用的控制器中添加任何一種方法。

下面是一個例子:

我的網址: 'http://www.example.com/users'

// routes.php 
Route::controller('users', UserController'); 

// UserController.php 
public function getIndex() 
{ 
    // index stuff 
} 

現在我發送類似的請求:http://www.example.com/users/edit-user/125

// UserController.php 
public function getEditUser($user_id) 
{ 
    // getEditUser, postEditUser, anyEditUser can be called on /users/edit-user 
    // and 125 is the parameter pasted to it 
} 

這樣做,這樣應該讓你成爲能夠發送一個請求(post或get)到一個url,控制器應該能夠根據url調用正確的方法。

下面是一些關於它的更多規則:http://laravel.com/docs/5.1/controllers#implicit-controllers

相關問題