所以我有一个Laravel控制器(MainController.php
),其中包含以下几行:
...
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''MainController@_staff_a');
Route::any('_staff_b''MainController@_staff_b');
...
etc.
如果我改变主意,似乎有很多线条和很多东西要改变......
我想知道我是否可以在routes.php
中使用一些正则表达式,在MainController.php
中使用等效的正则表达式来处理以下划线(_
)开头的路由?
Laravel专家可以分享一些提示/建议吗?我对这个框架很陌生。
答案 0 :(得分:1)
当然 - 只需将其添加为参数即可。例如。像这样:
Route::any('_staff_{version}', 'MainController@_staff');
public function _staff($version) {
return view('_staff_'.$version);
}
答案 1 :(得分:1)
我认为你不需要搞乱正则表达式。您可以使用隐式控制器Route::controller()
,它不是最佳解决方案,但会执行我认为您想要的操作。
所以而不是
Route::any(..)
你可以做到
Route::controller('url', 'MainController');
所以你的路线是什么' url'会发送给你这个控制器。使用' /'然后添加要调用的控制器中的任何方法。
以下是一个例子:
我的网址:' 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
}
这样做应该允许您只能向网址发送请求(发布或获取),控制器应该能够根据网址调用正确的方法。
以下是一些有关它的规则:http://laravel.com/docs/5.1/controllers#implicit-controllers