Laravel - 我可以通过规则控制路由吗?
Laravel - can I control routes by rule?
所以我有一个 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专家可以分享一些tips/suggestions吗?我是这个框架的新手。
当然 - 只需将其添加为参数即可。例如。像这样:
Route::any('_staff_{version}', 'MainController@_staff');
public function _staff($version) {
return view('_staff_'.$version);
}
我认为您不需要乱用正则表达式。您可以使用隐式控制器 Route::controller()
这不是最好的解决方案,但会做我认为您想要的。
所以
Route::any(..)
你可以做到
Route::controller('url', 'MainController');
因此,您到任何 'url' 的路线都会将您带到该控制器。在其后跟一个“/”,然后在您要调用的控制器中添加任何方法。
这是一个例子:
我的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
}
这样做应该允许您只向 url 发送请求(post 或获取),并且控制器应该能够根据url。
这里有一些关于它的更多规则:http://laravel.com/docs/5.1/controllers#implicit-controllers
所以我有一个 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专家可以分享一些tips/suggestions吗?我是这个框架的新手。
当然 - 只需将其添加为参数即可。例如。像这样:
Route::any('_staff_{version}', 'MainController@_staff');
public function _staff($version) {
return view('_staff_'.$version);
}
我认为您不需要乱用正则表达式。您可以使用隐式控制器 Route::controller()
这不是最好的解决方案,但会做我认为您想要的。
所以
Route::any(..)
你可以做到
Route::controller('url', 'MainController');
因此,您到任何 'url' 的路线都会将您带到该控制器。在其后跟一个“/”,然后在您要调用的控制器中添加任何方法。
这是一个例子:
我的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
}
这样做应该允许您只向 url 发送请求(post 或获取),并且控制器应该能够根据url。
这里有一些关于它的更多规则:http://laravel.com/docs/5.1/controllers#implicit-controllers