2016-08-31 4 views
5

Я только что обновился от Laravel 5.2 до 5.3. Я использую пакет Laravel-DataTables для нескольких таблиц в своем приложении.Route :: controller() альтернатива в Laravel 5.3+

После обновления при запуске 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(), и какова альтернатива для этих маршрутов?

ответ

7

Явный routes будет:

Route::get('/datatables/orders', array('middleware' => 'auth', 'uses' => '[email protected]'))->name('datatables.dataOrders'); 
Route::get('/datatables/properties', array('middleware' => 'auth', 'uses' => '[email protected]'))->name('datatables.dataProperties'); 
+0

спасибо, решена ошибка. Я должен был удалить «middleware» => 'auth''. – Grigio

+0

@ArturGrigio рада помочь –

+3

ОК, поэтому я знаю, что неявные маршруты ушли в 5.3. Есть ли пакет, который все еще позволяет это где-то? Или что я могу сделать, чтобы вернуть это? - не обсуждая, почему я не должен этого делать ... :) – ericbae

2

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

Следующие функции являются устаревшими в 5.2 и будут удалены в выпуске 5.3 в июне 2016 года:

  • Неявные маршруты с использованием контроллера Route::controller устарели. Пожалуйста, используйте явный учет маршрута в файле маршрутов. Вероятно, это будет извлечено в пакет.
+0

пропустил этот :(большое спасибо :) Что такое * явный маршрут * для моего варианта использования? – Grigio

+0

@ArturGrigio «Пожалуйста, используйте явный учет маршрута в вашем файле маршрутов». – ceejayoz

5

Я была такая же проблема, как вы, и ни одна из альтернатив (явная декларация или публикации) не было достаточно хорошо. Были также некоторые альтернативы, которые требовали изменения слишком большого количества кода.

Вот почему я написал класс под названием AdvancedRoute, который служит заменой.

Он может быть использован простой заменой маршрута :: Контроллер с AdvancedRoute :: контроллер, как это:

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

Полная информация об установке и использовании найти на GitHub репо по адресу:

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

Упование вы считаете это полезным.

0

Вы можете использовать resource().

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

Примечание: префикс «получить» не требуется. getIndex() = index()