URL の /controller/method/id を /slug だけに置き換える最善の方法は何ですか?
例: 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');
}