通过注册在 Laravel 中分配角色

问题描述 投票:0回答:1

嗨,我对 Laravel 相当陌生,我想要实现的是在注册时将用户角色分配给用户。我已成功播种并创建了包含 role_id 的用户表。我已经创建了登录和注销,但是当我尝试创建注册时,出于某种原因,我从 URL 参数传递的 role_id 在我的情况下:

{{hostAuth}}/register/1
,其中“1”应该是 role_id。

对于我的 RegisterRequest,目前的样子是这样的:

public function rules(): array
{
    return [
        'name' => 'required|string|max:150',
        'email' => 'required|email|max:150|unique:users',
        'password' => 'required|confirmed',
        'role_id' => 'required'
    ];
}

public function getData(int $role_id): array
{

    $this->merge([
        'role_id' => $role_id,
    ]);

    return $this->validated();
}

这是我该部分的控制器:

 public function __invoke(RegisterRequest $request)
{
    User::create($request->getData(1));
}

public function register(RegisterRequest $request, int $role_id)
{
    User::create($request->getData($role_id));
}

最后是网络路由(因为我正在使用 SPA):

Route::post('/register/{role_id}', [RegisterController::class, 'register']);

当我尝试运行它时,这是我收到的错误:

  {
    "message": "The role id field is required.",
    "errors": {
        "role_id": [
            "The role id field is required."
        ]
    }
}

当我添加 role_id 时,我得到了正确的数字,但由于某种原因,role_id 没有被添加到我验证数据的部分,只有我在正文中传递的 3 个参数显示,是的,这是我的请求正文还有:

{
"name": "test",
"email": "[email protected]",
"password": "password",
"password_confirmation": "password"
}

就像我提到的,我对 Laravel 相当陌生,所以如果有比这更好/更干净的方法,我会洗耳恭听,或者是否有人可以帮助我弄清楚我在这里做错了什么。预先感谢

php laravel authentication roles
1个回答
0
投票

这篇文章富有创意且信息丰富。我实际上为我寻找这样的网站。我很高兴收到所有信息。感谢您提出参与全球发展的深思熟虑的想法努力

© www.soinside.com 2019 - 2024. All rights reserved.