我正在尝试使用名称而不是id显示类别网址,例如。 http://567.0.0.1:23/category/Women
。在类别表中,有Id
列,在产品表中也有name
列。到目前为止,该网址显示为空类别,如何使它显示带有名称的网址?
路线
category_id
Href
Route::get('/category/{name}', 'HomeController@showCates');
控制器
`<a href="http://567.0.0.1:23/category/Women"></a>`
答案 0 :(得分:1)
如果您希望URL显示类别名称而不是ID,则可以为名为slug
的类别表创建新的唯一列。
创建类别后,您可以通过Laravel更改器自动为它分配一个子弹字段:
// inside Category model
public function setNameAttribute($name)
{
$this->attributes['slug'] = str_slug($name);
$this->attributes['name'] = $name;
}
然后您可以访问以下路线:
Route::get('/category/{slug}', [
'uses' => 'CategoryController@show',
'as' => 'category.show'
]);
在刀片模板中,您可以创建如下网址:
{{ url('/category', ['slug' => $category->slug]) }}
这将导致例如http://567.0.0.1:23/category/women
内部控制器:
public function show($slug)
{
$category = Category::where('slug', '=', $slug)->first();
return view('category.show', compact('category'));
}