2

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

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

因此,我可以在大多数情况下为约定http://example.com/controller/method/param定义一个路由,而不是在路由文件中指定每个方法

4

3 回答 3

2

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

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

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

除了,

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

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

似乎您想要一条通用的单线路线。是不是真的值得吗?

于 2013-11-11T00:52:14.007 回答
2

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

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

这将重定向my-controller/testMyController@test或。my-controller/double-testMyController@doubleTest

于 2013-11-11T00:53:36.003 回答
0

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

Laravel 通过为每个视图、控制器中的每个方法以及每个 AJAX 回调定义一个路由变得非常麻烦,因为大多数路由都可以完美地适应常见且已知的模式“控制器/动作/id”,保持简单性、性能、可维护性和更小的代码。我仍在努力寻找一种在 Laravel 中实现类似功能的方法,但似乎我的努力是徒劳的。Route::controller(); 从 Laravel 4 开始就被弃用了,如果我没记错的话,转而支持 RESTful 控制器。

于 2019-12-26T03:58:48.473 回答