Laravel 5.3+中的Route :: controller()替代方案

Art*_*gio 6 routing laravel laravel-5.3

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

我跑完后升级后artisan serve我收到了:

[BadMethodCallException]
Method controller does not exist.
Run Code Online (Sandbox Code Playgroud)

我在routes.php(现在web.php)跟踪这段代码的问题

Route::controller('datatables', 'ProfileController', [
    'anyOrders'  => 'datatables.dataOrders',
    'anyProperties' => 'datatables.dataProperties',
]);
Run Code Online (Sandbox Code Playgroud)

这是为DataTables文档路由查询的建议方法.

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

小智 8

明确的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');
Run Code Online (Sandbox Code Playgroud)

  • 好的,所以我知道隐含的路线在5.3中消失了.是否有一个包仍然可以在某个地方启用?或者我该怎么做才能把它带回来? - 没有讨论为什么我不应该这样做... :) (3认同)

小智 6

我和你有同样的问题,没有其他选择(明确的声明或发布)足够好.还有一些替代方案需要更改太多的代码.

这就是为什么我写了一个名为AdvancedRoute的类,它可以作为替代品.

它可以通过简单地将Route :: controller替换为AdvancedRoute :: controller来使用,如下所示:

AdvancedRoute::controller('users','UserController');
Run Code Online (Sandbox Code Playgroud)

有关如何在GitHub仓库中安装和使用find的完整信息:

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

希望您觉得这个有帮助.