【问题标题】:Laravel route parameter with hyphen 404 error带有连字符 404 错误的 Laravel 路由参数
【发布时间】:2020-11-15 20:02:32
【问题描述】:

嗨,今天我在使用 laravel 框架时遇到了这个问题。我想为 Category 模型创建动态 SEO 链接,但遇到了路由参数问题。

这是我在web.php的路线:

Route::get('transport/{category?}', 'JobController@index');

这是路由重定向到的方法:

public function index(Category $category = null)
{
    if ($category) {
        $jobs = Job::whereCategoryId($category->id)->orderBy('id', 'desc')->paginate(10);
    } else {
        $jobs = Job::orderBy('id', 'desc')->paginate(10);
    }

    return view('jobs')->with([
        'jobs'             => $jobs,
        'categories'       => Category::all(),
        'current_category' => $category,
    ]);
}

Category 表如下所示:

Schema::create('categories', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('token');
    $table->longText('description');
    $table->timestamps();
});

Jobcategory 相关:

$table->integer('category_id');

/transport/furniture 之类的路由有效,但/transport/other-vehicles 之类的路由无效,我收到 404 错误。

【问题讨论】:

  • 你能在这里分享类别模型吗?您是否在模型中的getRouteKeyName 中设置了默认键名?
  • 您是否设置了路由模型绑定以使用 slug?
  • @Aashishgaba 你救了我的命,谢谢你提供的线索。这是public function getRouteKeyName() { return 'name'; } 之前的类别模型,我将其更改为public function getRouteKeyName() { return 'token'; } 并且它有效! @KurtFriars 也感谢您的回复

标签: laravel parameters routes http-status-code-404 hyphen


【解决方案1】:

我一开始传递的参数是来自Category 模型的name。然后我对代码进行了更改,添加了token 列并开始传递它。应用程序仍然需要 name 而不是 token,所以我更改了从 getRouteKeyName() 返回的值,它可以工作!

之前

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

之后

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 2014-09-22
    • 2013-12-26
    • 2014-12-21
    • 2017-10-20
    • 2018-01-18
    • 2012-08-26
    相关资源
    最近更新 更多