Route::controller() Laravel 5.3+ 中的备选方案

Route::controller() alternative in Laravel 5.3+

我刚从 Laravel 5.2 升级到 5.3。我正在为我的应用程序中的多个表使用 Laravel-DataTables 包。

升级后 运行 artisan serve 我收到:

[BadMethodCallException]
Method controller does not exist.

我已经在 routes.php(现在 web.php

中找到了这段代码
Route::controller('datatables', 'ProfileController', [
    'anyOrders'  => 'datatables.dataOrders',
    'anyProperties' => 'datatables.dataProperties',
]);

这是路由 DataTables Documentation 查询的建议方式。

Route::controller() 是否已弃用,这些路由的替代方案是什么?

https://laravel.com/docs/5.3/upgrade#upgrade-5.3.0

The following features are deprecated in 5.2 and will be removed in the 5.3 release in June 2016:

  • Implicit controller routes using Route::controller have been deprecated. Please use explicit route registration in your routes file. This will likely be extracted into a package.

显式 routes 将是:

Route::get('/datatables/orders', array('middleware' => 'auth', 'uses' => 'ProfileController@anyOrders'))->name('datatables.dataOrders');
Route::get('/datatables/properties', array('middleware' => 'auth', 'uses' => 'ProfileController@anyProperties'))->name('datatables.dataProperties');

我遇到了和你一样的问题,none 的备选方案(显式声明或发布)已经足够好了。还有一些替代方案需要更改太多代码。

这就是为什么我写了一个 class 称为 AdvancedRoute 的原因,它用作替代品。

只需将 Route::controller 替换为 AdvancedRoute::controller 即可使用,如下所示:

AdvancedRoute::controller('users','UserController');

有关如何安装和使用 find 的完整信息,请参见 GitHub 存储库,网址为:

https://github.com/lesichkovm/laravel-advanced-route

希望你觉得这有用。

您可以使用 resource()。

Route::resource('users','UserController');

注意:不需要 "get" 前缀。 getIndex() = index()