显示仅名称为laravel的类别URL

时间:2019-08-17 16:44:00

标签: php laravel laravel-5

我正在尝试使用名称而不是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>`

1 个答案:

答案 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'));
}