1

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');
}
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 に答える