5

我从 CodeIgniter 来到 Laravel。

那么,使用自动路由到所有控制器是一个坏主意吗?

Route::controller(Controller::detect());

我应该使用它而不是在 routes.php 中创建路由吗?

4

5 回答 5

10

是的,这很糟糕。

Controller::detect() 实际上在 Laravel 4 中并不存在,因为它有点坏了。

detect() 将通过您的文件系统并返回控制器文件,但这是一个坏主意,因为您定义路由的顺序很重要。如果你有任何嵌套的控制器,你会发现这很容易被破坏。

detect() 还会根据文件系统以不同的顺序返回文件,因此这会导致很多不可预测性。

我认为您应该以任何方式定义所有路由,它更容易阅读和调试。

于 2013-03-05T18:19:43.043 回答
5

Laravel 没有 CI 的一个有趣的事情是,对于某些页面,您可以直接路由到视图,而根本不需要控制器。想想像“关于我们”这样的静态页面。CodeIgniter 需要您为此设置一个控制器 + 视图,即使控制器几乎不会做任何事情。在 Laravel 的情况下,您可以在这种情况下直接路由到视图。

手动设置路线将允许您设置这些短路路线。

于 2013-03-05T18:17:21.747 回答
1

自动检测是个坏主意。

您可以使用路由或使用 Route::controller('mycontroller') 或控制器数组,如 Route::controller(array('mycontroller', mycontroller2');

然后你得到好处,没有自动检测。

于 2013-03-05T18:21:40.007 回答
1

在 laravel 4 中:

你可以使用像文档http://laravel.com/docs/controllers#restful-controllers这样的 Restful Controller

Route::controller()必须以两个参数为最低要求第一个参数代表URL响应,第二个参数是控制器名称

您可以将第三个参数写入Route::controller()一个数组,其中包含操作名称(带有 HTTP 动词的操作名称)和此操作的路由名称

前任:

Route::controller('users','UsersController',array(
            'getUsers' =>"listUsers" , 
           ));

getUsers 操作的路由名称是 listUsers

于 2013-09-11T23:03:58.303 回答
-1

下面是 CRUD 和通用路由的一个很好的例子

类型 php arisan controller:make SampleController

编辑routes.php并添加

Route::resource('sample', 'SampleController'); 

然后键入 php artisan routes以显示新创建的路线

于 2014-12-04T06:01:50.097 回答