Вложенный маршрут Laravel с префиксом и ресурсом - PullRequest
0 голосов
/ 28 сентября 2018

У меня много таких маршрутов:

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 ]

0 голосов
/ 28 сентября 2018

Вам нужно написать 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');
         });

});
0 голосов
/ 28 сентября 2018

Хорошо, я думаю, я понял, все, что вам нужно передать {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 перенаправляет на точный метод.

0 голосов
/ 28 сентября 2018

Я использую групповую маршрутизацию следующим образом.

<?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');
    });
});

Попробуйте это.Может быть, это поможет вам.

...