重用当前用户的用户资源路由

时间:2019-06-03 16:16:18

标签: laravel laravel-5

我已经为用户创建了资源路由。

Route::resource('users', 'UsersController');

我的控制器使用我的用户控制器处理路径/user/1/edit,如下所示:

public function edit(User $user)
{
    $this->authorize('update', $user);
    ...

此页面的模板为:resources/views/users/edit.blade.php

我如何定义一条新路由/user/edit,该路由动态地传递当前用户并重用edit(User $user)方法,同时还重用相同的视图模板?

2 个答案:

答案 0 :(得分:1)

您的edit()方法将需要更改以有条件地接受User模型。然后,您需要检查是否通过了$user,否则假设需要当前用户:

public function edit(User $user = null)
{
    $user = $user ?: auth()->user();

    $this->authorize('update', $user);

    ...

并创建新路线:

Route::get('user/edit', 'UsersController@edit')

答案 1 :(得分:0)

尝试一下:

Route::get('users/{user}/edit', 'UserController@edit')->name(edit-user);

然后,按照以下方式在路由中传递用户ID:

route('edit-user', ['user'=>$user->id]);

希望对您有帮助。