我想为Laravel应用程序创建一个自定义URL结构。
现在我有一个这样的结构:
我想这样改变它:
我在公共数据库表中已经有子弹。检测我应该为“产品名称”使用哪个控制器不是问题。
我想知道,这种情况下的最佳做法是什么。我在哪里可以将连接“产品名”到产品控制器的逻辑放在哪里?
我应该使用中间件还是有其他方法可以使用?
答案 0 :(得分:0)
您想要的内容,可以像在您的web.php中指定
Route::get('user-{name}', 'UserController@show')->name('users.show');
和在UserController中
function show(Request $request, User $name){
return $name;
}
应该可以正常工作,但是其他端点,例如索引,删除,编辑等呢?
我的感觉会是
Route::delete('user-{name}', 'UserController@delete')->name('users.delete');
但是index()
呢?甚至在这种情况下,name
也必须是唯一的,否则会产生异常的结果。
也许您可以说得更清楚些,我可以据此编辑答案,但是
我相信,您应该遵循Laravel的路由模型绑定概念,而不要进行过多的自定义。根据路由模型绑定的概念
在您的模型中
public function getRouteKeyName()
{
return 'name';
}
现在,如果您想对其进行更多自定义,则可以使用
RouteServiceProvider.php boot()
方法
public function boot()
{
parent::boot();
Route::bind('flat_member', function ($value) {
return 'user-' . $value;
});
}