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