如何为网址使用子弹

时间:2019-02-02 21:28:56

标签: laravel laravel-routing slug

我正在尝试使用来显示URL上的链接。例如,而不是使用:

http://localhost:8000/product/1

我想使用...

http://localhost:8000/product/blue-shirts

到目前为止,我设法通过软件包cviebrock/eloquent-sluggable添加了子弹。我该如何使用路线和视图?

<?php

use Sluggable;

public function sluggable()
{
    return [
        'slug' => [
            'source' => 'product_name'
        ]
    ];
}

1 个答案:

答案 0 :(得分:0)

您可以在RouteServiceProvider中自定义路由模型绑定解析逻辑:

public function boot()
{
    parent::boot();

    Route::bind('product', function ($value) {
        return Product::where('slug', $value)->first() ?? abort(404);
    });
}

有关更多信息,请参见the docs here

或者,将以下内容添加到您的Product模型中以使用隐式绑定:

/**
 * Get the route key for the model.
 *
 * @return string
 */
public function getRouteKeyName()
{
    return 'slug';
}

Package docs explain further here