我可以用 /slug 替换 URL 中的 /controller/method/id 的最佳方法是什么?
例如:trips/1 会变成 /honduras-trip
这就是我正在做的,但他们不能成为更好的方法吗?
我的路线:
Route::get('/{slug}', 'HomeController@show');
我的控制器:
public function show($slug)
{
$class = Slug::where('name', '=', $slug)->firstOrFail();
if($class->slugable_type == 'Trip')
{
$trip = Trip::find($class->slugable_id);
return $trip;
}
if($class->slugable_type == 'Project')
{
$project = Project::find($class->slugable_id);
return $project;
}
if($class->slugable_type == 'User')
{
$user = User::find($class->slugable_id);
return $user;
}
}
我的蛞蝓模型:
class Slug extends Eloquent {
public function slugable()
{
return $this->morphTo();
}
}
其他型号都有这个方法:
public function slugs()
{
return $this->morphMany('Slug', 'slugable');
}