Маршрут [admin.funcionarios] не определен

#php #laravel

#php #laravel

Вопрос:

У меня есть это:

 Route::get('/admin/funcionarios', [AppHttpControllersAuthController::class, 'funcionarios'])->name('funcionarios');
 

и это:

 <?php

namespace AppHttpControllers;

use AppModelsFuncionarios;

class FuncionarioController extends Controller {

    public function destroy($id) {
        $funcionario = Funcionarios::find($id);
        $funcionario->delete();
        return redirect()->route('admin.funcionarios');
    }
}
 

Проблема в том, что я получаю эту ошибку: маршрут [admin.funcionarios] не определен. (Symfony ComponentRouting ExceptionRouteNotFoundException)
Есть идеи, как решить?

Комментарии:

1. является ли этот маршрут в группе, которая добавляет admin. имя? в противном случае все было бы так funcionarios , как вы определили

2. Это страница внутри администратора. admin / funcionarios.

3. можете ли вы показать свою группу маршрутов, которая добавляет этот префикс имени маршрута ‘admin.’?

4. Route::get('/admin', [AppHttpControllersAuthController::class, 'dashboard'])->name('admin');

5. о, это работает, спасибо!

Ответ №1:

Вы можете назвать свой маршрут так, как вам хотелось бы, поэтому вместо funcionarios вы могли бы назвать его admin.funcionarios , если хотите:

 Route::get(...)->name('admin.funcionarios');
 

Вы также можете использовать группу маршрутов, чтобы каскадировать это admin. имя для маршрутов внутри нее, если хотите:

 Route::name('admin.')->group(function () {
    Route::get(...)->name('funcionarios');
});
 

Теперь это имя маршрута для этого маршрута будет иметь admin.funcionarios «каскадную» конфигурацию групп маршрутов.

Документы Laravel 8.x — Маршрутизация — Именованные маршруты

Документы Laravel 8.x — Маршрутизация — Группы маршрутов — Префиксы имен маршрутов

Ответ №2:

Попробуйте это:
Route::get('/admin/funcionarios',['as' => 'admin.funcionarios', AppHttpControllersAuthController::class, 'funcionarios']);

Ответ №3:

Если вы хотите вернуть redirect()->route(‘admin.funcionarios’);

Попробуйте изменить :

 Route::get('/admin/funcionarios', [AppHttpControllersAuthController::class, 'funcionarios'])->name('funcionarios');
 

Для

 Route::get('/admin/funcionarios', [AppHttpControllersAuthController::class, 'funcionarios'])->name('admin.funcionarios');
 

Ответ №4:

или вы можете сделать это так:

 public function destroy($id) {
    $funcionario = Funcionarios::find($id);
    $funcionario->delete();
    return redirect()->route('funcionarios');
}
 

если это часть маршрута с именем, вы должны записать его в скобках.