Поэтому я снова использовал этот формат. На моих маршрутах.php у меня есть
Route::controller('datatables', 'HomeController', [ 'PaymentsData' => 'payments.data', 'getIndex' => 'datatables', ]);
В моем HomeController.php у меня есть
public function getIndex() { return view('payments.index'); } /** * Process datatables ajax request. * * @return \Illuminate\Http\JsonResponse */ public function Payments() { return Datatables::of(DB::table('customer'))->make(true); }
В любое время, когда я пытаюсь использовать php artisan
я получаю [BadMethodCallException] Method controller does not exist.
Вопрос, является ли эта форма его устареванием или почему кто-то видит что-то не так? Любезно помочь. Спасибо.
Насколько мне известно, это никогда не было доступно для Laravel 5. Я не использовал 4, поэтому я не уверен, что до 5. Но в 5 вам нужно использовать Route::get
и Route::post
.
Route::get('datatables', ['as' => 'HomeController', 'uses' => 'HomeController@getIndex']); Route::get('payments-data', ['as' => 'HomeControllerPaymentsData', 'uses' => 'HomeController@Payments']);
Да, он был удален, так как использование неявных контроллеров – это плохая практика – https://github.com/illuminate/routing/commit/772fadce3cc51480f25b8f73065a4310ea27b66e#diff-b10a2c4107e225ce309e12087ff52788L259
Метод controller
устарел с тех пор, как Laravel 5.3. Но теперь вы можете использовать метод resource
, который предназначен для той же цели, что и метод controller
:
Из документов :
Маршрутизация ресурсов Laravel назначает типичные маршруты «CRUD» контроллеру с одной строкой кода. Например, вы можете создать контроллер, который обрабатывает все HTTP-запросы для «фотографий», хранящихся в вашем приложении.
Используйте его как:
Route::resource('datatables', 'HomeController');
Недостатком этой неявной маршрутизации является то, что вы должны последовательно указывать свои методы, более подробно об этом в документах.
В большинстве случаев лучшей практикой будет явная маршрутизация, так как это делает ваш код более понятным и понятным.