Dan*_*est 5 laravel laravel-5.6
这是我到目前为止的代码:
Web.php
Route::get('/{uri}', 'PageController@show')->name('page.show');
Run Code Online (Sandbox Code Playgroud)
页面控制器
// Show the requested page
public function show(Page $page)
{
return view('templates.page', compact('page'));
}
Run Code Online (Sandbox Code Playgroud)
页面模型
public function getRouteKeyName()
{
return 'uri';
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,即使我更改了路由键名,Route-model-binding怎么也无法正常工作并且在控制器中找不到页面。它在控制器中只有一个空模型,没有找到页面。
您应该执行以下操作:
// Route
Route::get('/{page}', 'PageController@show')->name('page.show');
// Controller Method
public function show(Page $page)
{
return view('templates.page', compact('page'));
}
Run Code Online (Sandbox Code Playgroud)
如果/{page}包含idlike:1并且您的pages表具有一id列,则说明已完成所有操作,但是,如果您要查询页面表(而不是id)getRouteKeyName,请在Page模型中声明该方法,然后从该方法中检索该列名。因此,例如,如果您的pages表具有唯一性,slug并且您uri具有类似的内容,example.com/contact则声明以下方法:
public function getRouteKeyName()
{
return 'slug'; // db column name
}
Run Code Online (Sandbox Code Playgroud)
现在,该框架将使用/ default where slug = {slug from uri}以外的内容查询页面id。希望它现在有所帮助。
| 归档时间: |
|
| 查看次数: |
3371 次 |
| 最近记录: |