【问题标题】:In Laravel how can I replace a controller/method/id with just /slug in the URL?在 Laravel 中,如何仅用 URL 中的 /slug 替换控制器/方法/id?
【发布时间】: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


    【解决方案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>
    

    【讨论】:

    • 这行不通,因为我需要“slug”是动态的,并根据“slug”所属的模型加载不同的模型。
    猜你喜欢
    • 2017-05-22
    • 2014-10-23
    • 2017-10-15
    • 2020-06-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 2019-03-18
    相关资源
    最近更新 更多