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');