这是我到目前为止的代码:
Web.php
// Show the requested page
public function show(Page $page)
{
return view('templates.page', compact('page'));
}
的PageController
public function getRouteKeyName()
{
return 'uri';
}
页面模型
.text()
我的问题是路由模型绑定是如何工作的,即使我更改了路由密钥名称,也没有在控制器中找到该页面。它在控制器中只有一个空模型,但没有找到该页面。
答案 0 :(得分:5)
您应该执行以下操作:
// Route
Route::get('/{page}', 'PageController@show')->name('page.show');
// Controller Method
public function show(Page $page)
{
return view('templates.page', compact('page'));
}
如果/{page}
包含id
之类的:1
且您的网页表格中包含id
列,那么所有内容都已完成,但如果您要查询的是除了id然后在getRouteKeyName
模型中声明Page
方法,并从该方法返回该列名称。例如,如果您的网页表格具有唯一slug
而您的uri
具有example.com/contact
之类的内容,则声明以下方法:
public function getRouteKeyName()
{
return 'slug'; // db column name
}
现在,框架将使用除where slug = {slug from uri}
/ default之外的id
之类的内容来查询页面。希望现在有所帮助。