嗨,我对 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 相当陌生,所以如果有比这更好/更干净的方法,我会洗耳恭听,或者是否有人可以帮助我弄清楚我在这里做错了什么。预先感谢
这篇文章富有创意且信息丰富。我实际上为我寻找这样的网站。我很高兴收到所有信息。感谢您提出参与全球发展的深思熟虑的想法努力。