Laravel: несколько маршрутов с одинаковым местоположением и именем - PullRequest
0 голосов
/ 22 марта 2020

В моем приложении laravel (7.x) я пытаюсь связать два маршрута admin/ и admin/dashboard с одинаковыми именами. При выполнении команды php artisan route:list я получаю сообщение об ошибке Unable to prepare route [admin/dasboard] for serialization. Another route has already been assigned name [admin.dashboard].

Web. php

Route::group([ 'prefix' => 'admin' ], function() {
    ...

    /**
     * Dashboard
     */
    Route::get('/', 'Backend\DashboardController@index')->name('admin.dashboard');
    Route::get('/dasboard', 'Backend\DashboardController@index')->name('admin.dashboard');
});

В предыдущих версиях laravel все работало нормально.

Как это исправить ..?

Ответы [ 3 ]

1 голос
/ 22 марта 2020

У вас не может быть двух маршрутов с одинаковыми именами.

Route::group([ 'prefix' => 'admin' ], function() {
    ...

    /**
     * Dashboard
     */
    Route::get('/', 'Backend\DashboardController@index')->name('home.dashboard');
    Route::get('/dasboard', 'Backend\DashboardController@index')->name('admin.dashboard');
});
0 голосов
/ 23 марта 2020

Спасибо @ Sehdev ...

Вот последний код, который я использую. Хотя даже с обоими маршрутами, упомянутыми в web.php, вы можете видеть только маршрут в браузере, который написан в конце, который в моем случае равен /dashboard. Однако оба (/, /dashboard) маршрута сейчас работают.

Route::namespace('Backend')->prefix('admin')->group(function() {
    ...

    /**
     * Dashboard
     */
    Route::get('/', 'DashboardController@index')->name('admin.dashboard');
    Route::get('/dashboard', 'DashboardController@index')->name('admin.dashboard');
});

Еще раз большое спасибо:)

0 голосов
/ 22 марта 2020

Вы используете именованные маршруты т.е. ->name(admin.dashboard) дважды, но именованный маршрут должен быть уникальным , поэтому вы получаете ошибку

 Route::get('/', 'Backend\DashboardController@index')->name('admin.dashboard');
 Route::get('/dasboard', 'Backend\DashboardController@index')->name('admin.dashboard');

Чтобы решить эту проблему измените любой из ваших маршрутов на что-то другое, например,

Route::get('/', 'Backend\DashboardController@index')->name('admin'); // changed admin.dashboard to admin
Route::get('/dasboard', 'Backend\DashboardController@index')->name('admin.dashboard');
...