Редактировать, показывать и удалять маршруты не работают, используя laravel 5.7 - PullRequest
0 голосов
/ 02 октября 2018

Страница не найдена все, что я получаю при попытке получить эти страницы.

web.php выглядит так

Route::resource('admin/roles', 'RoleController');

route:list выглядит так

| GET|HEAD  | admin/roles         | index   | App\Http\Controllers\RoleController@index   
| GET|HEAD  | admin/roles/create  | create  | App\Http\Controllers\RoleController@create  
| PUT|PATCH | admin/roles/{}      | update  | App\Http\Controllers\RoleController@update  
| GET|HEAD  | admin/roles/{}      | show    | App\Http\Controllers\RoleController@show    
| DELETE    | admin/roles/{}      | destroy | App\Http\Controllers\RoleController@destroy 
| GET|HEAD  | admin/roles/{}/edit | edit    | App\Http\Controllers\RoleController@edit    

Контроллер выглядит так

public function show($id)
{
    $role = Role::find($id);
    return view('admin.roles/show')->with('role',$role);
}

public function edit($id)
{
    $role = Role::find($id);
    return view('admin.roles.edit')->with('role',$role);
}

enter image description here

1 Ответ

0 голосов
/ 02 октября 2018

Вы должны попробовать перейти в браузере на admin/roles/1 вместо admin/roles/show/1.Маршрут, который вы пробовали, не существует, поэтому вы правильно получаете ошибку 404.

Поскольку страница создания и индексации работает нормально, но не показывает, я думаю, что с привязками маршрута что-то не так.

Поскольку маршруты в команде route:list показывают admin/roles/{}, мне кажется, что laravel не смог выяснить привязки.

Моя лучшая догадка для этого - проверить ядро ​​http.У вас должно быть промежуточное программное обеспечение \Illuminate\Routing\Middleware\SubstituteBindings::class либо в массиве $middleware, либо внутри группы web в массиве $middlewareGroups.Я предлагаю поместить его в группу промежуточного программного обеспечения web.

Например:

protected $middlewareGroups = [

    //

    'web' => [
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ],

    //
];

Еще одно предложение:

Попробуйте определить маршруты по отдельности вместо использования Route::resource()

Route::get('admin/roles', 'RoleController@index');
Route::get('admin/roles/create', 'RoleController@create');
Route::patch('admin/roles/{role}', 'RoleController@update');
Route::get('admin/roles/{role}', 'RoleController@show');
Route::delete('admin/roles/{role}', 'RoleController@delete');
Route::get('admin/roles/{role}/edit', 'RoleController@edit');

Обратите внимание, что вам может понадобиться добавить ->name('some-name'), чтобы исправить имена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...