Laravel模式路由到控制器方法


Laravel pattern routing to controller methods

我怎样才能制作这样的路由器

Route::any("/{controller}/{method}/{param}", "$controller@$method");

这样,我将能够为约定 http://example.com/controller/method/param 的大多数情况定义路由,而不是指定路由文件中的每个方法。

我真的不知道你为什么要这样做,我认为这种方法在路由文件中失去了灵活性。我宁愿明确定义事物,如下所示:

Route::get('/users/{id}', 'UserController@show');
Route::post('/users', 'UserController@store');

而且,如您所见,不同的路由尽管由属于同一控制器的方法处理,但可能具有不同数量和类型的参数(例如:获取特定用户需要发送 ID 参数,但存储新用户不需要发送参数,至少不需要通过 URL 发送)。

此外

Route::any("/{controller}/{method}{param}" ...
意味着 {}

中的所有内容都是参数,包括 {param}。

似乎您想要一个通用的单行路线。真的值得吗?

您可以使用

Route::controller,但您必须为每个控制器执行此操作:

Route::controller('my-controller', 'MyController');

这会将my-controller/test重定向到MyController@testmy-controller/double-test重定向到MyController@doubleTest

@Emmanuel 菲格罗拉 是的,拥有大多数框架使用的路由约定是值得的,因为如果您需要定义任何特殊路由,您可以在不破坏任何东西的情况下定义它,这对开发人员来说非常方便,因为他不必处理路由文件中的数百个路由定义, 这可能会令人困惑、容易出错且难以维护。

Laravel通过为每个视图,控制器中的每个方法和每个AJAX回调定义路由变得非常麻烦,而大多数路由可以完全适合通用且已知的模式"控制器/操作/id",保持简单性,性能,可维护性和更小的代码。我仍在努力寻找一种方法在Laravel中实现类似的东西,但似乎我的努力是徒劳的。路由::控制器();如果我记得不错的话,从 Laravel 4 开始被弃用,转而使用 RESTful 控制器。