Laravel вложенный маршрут с префиксом и ресурсом доцент работы
У меня есть много таких маршрутов:
Route::resource('/dashboard/class', 'classController');
Route::get('/dashboard/class/get-by-filter', 'classController@getByFilter');
Route::get('/dashboard/class/get-by-search', 'classController@getBySearch');
...
...
Route::resource('/dashboard/orders', 'OrderController');
Route::get('/dashboard/orders/get-by-filter', 'OrderController@getByFilter');
...
теперь я хочу написать это с префиксом, группой и ресурсами, но у меня есть проблема, когда пишу так:
Route::prefix('dashboard')->group(function()
{
Route::prefix('class')->group(function()
{
Route::resource('/', 'classController');
Route::get('/get-by-filter', 'classController@getByFilter');
Route::get('/get-by-search', 'classController@getBySearch');
});
Route::prefix('orders')->group(function()
{
Route::resource('/', 'OrderController');
Route::get('/get-by-filter', 'OrderController@getByFilter');
Route::get('/get-by-search', 'OrderController@getBySearch');
});
});
зачем возвращать 404, когда я пытаюсь получить доступ к шоу-адресу, например так:
example.com/dashboard/orders/4
3 ответа
Я использую групповую маршрутизацию, как это.
<?php
Route::group(['prefix' => 'dashboard'], function() {
Route::group(['prefix' => 'class'], function() {
Route::resource('/', 'classController');
Route::get('/get-by-filter', 'classController@getByFilter');
Route::get('/get-by-search', 'classController@getBySearch');
});
Route::group(['prefix' => 'orders'], function() {
Route::resource('/', 'OrderController');
Route::get('/get-by-filter', 'OrderController@getByFilter');
Route::get('/get-by-search', 'OrderController@getBySearch');
});
});
Попробуй это. Может быть, это поможет вам.
Вам нужно написать resource
вместо get
Route::prefix('dashboard')->group(function()
{
Route::prefix('class')->group(function()
{
Route::resource('/', 'classController');
Route::get('/get-by-filter', 'classController@getByFilter');
Route::get('/get-by-search', 'classController@getBySearch');
});
Route::prefix('orders')->group(function()
{
Route::resource('/', 'OrderController');
Route::get('/get-by-filter', 'OrderController@getByFilter');
Route::get('/get-by-search', 'OrderController@getBySearch');
});
});
Хорошо, я думаю, что получил, все, что вам нужно передать {id} в URL, а затем dd($id) в вашем методе контроллера.
Route::group(['prefix'=>'dashboard'], function()
{
Route::group(['prefix'=>'class'], function()
{
Route::resource('/', 'classController');
Route::get('/get-by-filter', 'classController@getByFilter');
Route::get('/get-by-search', 'classController@getBySearch');
});
Route::group(['prefix'=>'orders'], function()
{
Route::resource('/{id}','classController');
Route::get('/get-by-filter', 'OrderController@getByFilter');
Route::get('/get-by-search', 'OrderController@getBySearch');
});
});
Я предлагаю вам использовать правильное пространство имен и убедиться, что ваш classController перенаправляет на точный метод.