找不到要获取的所有页面。
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);
}
答案 0 :(得分:0)
您应该尝试将浏览器导航到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')
来固定名称