2 回答
![?](http://img1.sycdn.imooc.com/5458463b0001358f02200220-100-100.jpg)
TA贡献2003条经验 获得超2个赞
你应该
创建将
slug
在表中添加一列的迁移填写
slug
每一行的场Str::slug($item->name)
告诉 Laravel 你想通过
slug
字段检索你的模型
// YourModel.php
public function getRouteKeyName()
{
return 'slug';
}
更改链接生成行 route('items',['item' => $item])
我知道你讨厌最后一点,但这是必要的。Laravel 已经知道如何使用路由和绑定来构建链接
还有最后一点,如果您想切换回带有 id 的链接,您只需getRouteKeyName()要从模型中删除该方法。
![?](http://img1.sycdn.imooc.com/545861b80001d27c02200220-100-100.jpg)
TA贡献1851条经验 获得超3个赞
这是很常见的,有什么slugs用。由于您不能Large Pizza在 URL 中使用,您需要将其“sluggify”为large-pizza,然后确保 slug 在您的数据库中是唯一的。
满足这些条件后,您可以将路线更改为
route('items',['item' => "large-pizza"])
注意:您定义的Route::get('item/{item}' ...)方式实际上适用于 slug。
接下来,更改您的代码以查询与 匹配的项目,slug而不是与id. 例如:
public funciton getItem($itemSlug){
$item = Item::where("slug", "=", $itemSlug)->first(); // firstOrFail(), etc.
return view("items.detail")->with(["item" => $item]);
}
- 2 回答
- 0 关注
- 215 浏览
添加回答
举报