1

我可以用 /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');
}
4

1 回答 1

-1

在你的 routes.php 中只给

Route::get('slug', array('uses' => 'HomeController@show'));

在您的控制器中,编写 show() 函数

public function show() {
  return View::make('welcome');
}

在你看来,

<li><a href="{{ URL::to('slug') }}">slug</a></li>
于 2013-12-19T06:20:29.977 回答