【发布时间】:2014-01-07 11:27:00
【问题描述】:
我可以用 /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');
}
【问题讨论】:
标签: php laravel slug laravel-routing