这是我到目前为止的代码:
Web.php
Route::get('/{uri}', 'PageController@show')->name('page.show');
页面控制器
// Show the requested page
public function show(Page $page)
{
return view('templates.page', compact('page'));
}
页面模型
public function getRouteKeyName()
{
return 'uri';
}
我的问题是,尽管我更改了路由键名称,但路由模型绑定为何不起作用并且在控制器中找不到页面。它在控制器中只有一个空模型,并且没有找到该页面。
您应该执行如下操作:
// Route
Route::get('/{page}', 'PageController@show')->name('page.show');
// Controller Method
public function show(Page $page)
{
return view('templates.page', compact('page'));
}
If /{page}
包含一个id
like: 1
你的页表有id
列然后全部完成,但如果您想查询除 id 之外的页面表,则声明getRouteKeyName
方法在你的Page
模型并从该方法返回该列名称。例如,如果您的页面表具有唯一的slug
和你的uri
有类似的东西example.com/contact
然后声明以下方法:
public function getRouteKeyName()
{
return 'slug'; // db column name
}
现在,框架将使用类似的方式查询页面where slug = {slug from uri}
以外id
/默认。希望现在有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)