Laravel route::resource的附加PUT/PATCH路由
我为用户提供了标准的资源路线:Laravel route::resource的附加PUT/PATCH路由,laravel,Laravel,我为用户提供了标准的资源路线: Route::resource('users','UserController') 然而,我想为已提交表单添加一个附加路由,该表单绑定现有用户的角色/权限 UserController show.blade.php 我尝试了这两种方法: {!!Form::model($user,['route'=>['users.updateRolesPermissions',$user->id],'method'=>'patch'])!!} 这是: {!!Form::open(
Route::resource('users','UserController')代码>
然而,我想为已提交表单添加一个附加路由,该表单绑定现有用户的角色/权限
UserController
show.blade.php
我尝试了这两种方法:
{!!Form::model($user,['route'=>['users.updateRolesPermissions',$user->id],'method'=>'patch'])!!}
这是:
{!!Form::open(['action'=>'UserController@updateRolesPermissions“])!!}
在不打开新的单独路由的情况下,向资源路由添加额外路由的最佳方法是什么?最佳方法是添加另一个路由
Route::patch('users/{user_id}/roles_permissions', 'UserController@ updateRolesPermissions');
Route::resource('users', 'UserController');
这是应该采用的方式,因此对于新加入项目的人来说,这是最清楚的。在这方面过于聪明会使以后很难找到和维护它
使用路由模型绑定,这应该与其他路由的行为相同。嘿,托马斯,谢谢,但我特别要求不要使用单独的路由,因为我已经设置了一个分组的中间软件,所以在检查每个路由的$pathInfo=$request->segment(1)时,我需要留在资源中
是的,我想这是有原因的=)我想你会发现按照设计的方式使用路线更容易。有大量的工作在幕后进行,你最终会试图复制。你能不能不把这个新路由添加到你的中间件中?我怀疑它能通过代码审查,因为所有路由都是数组,然后我必须创建一个单独的else if。我会试着安排一下。如果我有任何问题,请进入收听模式,如果一切顺利,我非常乐意签署此作为答案,谢谢托马斯。不确定您的路线文件听起来像什么,但这似乎很奇怪?routes文件应该非常简单,否则我不确定我会相信谁会通过你的代码审查:我恐怕不会使用Form::open
,因为它不再是Laravel的一部分,但是route('roles-permissions',['id'=>$user->id])
可能就是你想要的。不要忘记,对于隐式路由绑定,您可以在路由中使用{user}
,而不是{id}
。
Route::patch('users/{user_id}/roles_permissions', 'UserController@ updateRolesPermissions');
Route::resource('users', 'UserController');