【问题标题】:How can I do dynamic link with laravel?如何使用 laravel 进行动态链接?
【发布时间】:2019-05-08 16:02:46
【问题描述】:

考虑主要类别子类别的心态。单击链接时,我希望获得以下内容。

我可以:www.localhost.com/category/

我想做:www.localhost.com/category/vehicle

衍生产品:www.localhost.com/category/vehicle/bmw www.localhost.com/category/vehicle/bmw/bmm-x7-series

Route::get('/category/{id}', 'CategoryController@index')->name('category.index');
          `

我的路线如下:

Route::get('/category/{slug}', 'CategoryController@index')->where('slug' , '[\w\d\-\_]+');

我创建了一个名为 CategoryController 的控件

class CategoryController extends Controller
{
  public function index($slug)
  {
    $category = Category::where('slug' , $slug)->first();
    return view('category.show' , compact('category'));
  }

我的视图内容(category.show.blade.php)

{{$category->slug}}
          <a href="{{ url('/category/' . $category->slug) }}" class="uhover">life is good. {{url($category->slug)}}</a>

【问题讨论】:

  • 乍一看,我认为您的问题是您使用的是 {id} 令牌,IIRC laravel 认为它应该是一个整数,所以也许尝试使用不同的变量名。此外,this question 可能会为您的难题提供一些背景信息。

标签: php laravel-5


【解决方案1】:

如果您想在 URL 中而不是 ID 中包含车辆的类别/品牌,则需要从您的路线中删除 /{id} 并将其替换为 /{slug}

所以你的路线可能看起来像这样:

Route::get('/category/{slug}', 'CategoryController@index')->name('category.index');

您必须将方法更改为:

// Show Method
public function show($slug){
    $category = Category::where('slug', $slug)->first();
    return view('game.show', compact('category'));
}

理想情况下,为了确保 slug 是唯一的,您应该将其存储在数据库中。你可以利用 Laravel 的 slug helper 来做到这一点,如果 slug 已经存在,只需附加一个后缀以使其唯一。

您可以使用生成 slug 模型:

class Item extends Model
{
    public static function boot()
    {
        parent::boot();

        static::saving(function ($model) {
            $model->slug = str_slug($model->name);
        });
    }
}

如果你想使用路由模型绑定,那么你需要告诉 Eloquent 使用的列应该是你的 slug

public function getRouteKeyName()
{
    return 'slug';
}

【讨论】:

  • 谢谢兄弟,但不要申请。 :(
  • 怎么来的?我误解了你的问题吗?向我们提供更多详细信息,以便我们提供帮助。
  • 不幸的是,我真的不懂英语。感谢您的关注。
猜你喜欢
  • 1970-01-01
  • 2018-04-06
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多