考虑主要类别子类别心态。我希望在点击链接时拥有以下内容。
我能做到:www.localhost.com/category /
我想这样做:www.localhost.com/category/vehicle
衍生物:www.localhost.com/category/vehicle/bmw www.localhost.com/category/vehicle/bmw/bmm-x7-series
Route::get('/category/{id}', 'CategoryController@index')->name('category.index');
`
我的路线如下:
Route::get('/category/{slug}', 'CategoryController@index')->where('slug' , '[\w\d\-\_]+');
我创建了一个名为CategoryController的控件
class CategoryController extends Controller
{
public function index($slug)
{
$category = Category::where('slug' , $slug)->first();
return view('category.show' , compact('category'));
}
我的观看内容(category.show.blade.php)
{{$category->slug}}
<a href="{{ url('/category/' . $category->slug) }}" class="uhover">life is good. {{url($category->slug)}}</a>
答案 0 :(得分:0)
如果您想在网址中提供车辆的类别/品牌而不是ID,则需要从路线中移除/{id}
并将其替换为/{slug}
。
所以你的路线可能会是这样的:
Route::get('/category/{slug}', 'CategoryController@index')->name('category.index');
您必须将方法更改为:
// Show Method
public function show($slug){
$category = Category::where('slug', $slug)->first();
return view('game.show', compact('category'));
}
理想情况下,要确保slug是唯一的,您可以将其存储在数据库中。您可以利用Laravel的slug helper来执行此操作,如果slug已经存在,只需附加一个后缀以使其唯一。
您可以使用生成slug模型:
class Item extends Model
{
public static function boot()
{
parent::boot();
static::saving(function ($model) {
$model->slug = str_slug($model->name);
});
}
}
如果你想使用路由模型绑定,那么你需要告诉Eloquent要使用的列应该是你的slug
列而不是
public function getRouteKeyName()
{
return 'slug';
}