带有连字符 404 错误的 Laravel 路由参数
Posted
技术标签:
【中文标题】带有连字符 404 错误的 Laravel 路由参数【英文标题】:Laravel route parameter with hyphen 404 error 【发布时间】: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();
);
Job
与 category
相关:
$table->integer('category_id');
/transport/furniture
之类的路由有效,但/transport/other-vehicles
之类的路由无效,我收到 404 错误。
【问题讨论】:
你能在这里分享类别模型吗?您是否在模型中的getRouteKeyName
中设置了默认键名?
您是否设置了路由模型绑定以使用 slug?
@Aashishgaba 你救了我的命,谢谢你提供的线索。这是public function getRouteKeyName() return 'name';
之前的类别模型,我将其更改为public function getRouteKeyName() return 'token';
并且它有效! @KurtFriars 也感谢您的回复
【参考方案1】:
我一开始传递的参数是来自Category
模型的name
。然后我对代码进行了更改,添加了token
列并开始传递它。应用程序仍然需要 name
而不是 token
,所以我更改了从 getRouteKeyName()
返回的值,它可以工作!
之前:
public function getRouteKeyName()
return 'name';
之后:
public function getRouteKeyName()
return 'token';
【讨论】:
以上是关于带有连字符 404 错误的 Laravel 路由参数的主要内容,如果未能解决你的问题,请参考以下文章