Laravel - 如何获取 select 值并将其传递给 RegisterController create()
Laravel - How to get select value and pass it to RegisterController create()
我有以下问题,如何在我的 register.blade.php
上获取 select 的值?
当用户注册时,他应该能够 select 一个 role
,每个 role
都有一个 id
,一旦他点击 submit
role id
按钮应分配给 users
table 上的 rol_id
。
但是我不知道如何在 RegisterController
上使用 create
方法后获取 selected id
的值。
register.blade.php
的一部分 select:
<div class="form-group row">
<label for="rol_id" class="col-md-4 col-form-label text-md-right">Rol:</label>
<div class="col-md-6">
<select class="form-select" name="rol_id" id="rol_id">
<option value="2">User</option>
<option value="3">Editor</option>
<option value="1">Admin</option>
</select>
</div>
</div>
我应该在 rol_id
上放什么?这是 create
方法,我应该在其中分配角色 selected:
的 id
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\Models\User
*/
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'rol_id' =>
]);
return $user;
}
如果你需要更多methods/classes我会提供。
更新:我还面临另一个问题,一旦创建了一个用户,rol_id 就会被分配,但是我有另一个 table 叫做 role_user,其中有用户 ID 和rol id,如果用户只能有一个角色,那么拥有那个枢轴就没有多大意义了table对吗?
谢谢!
由于用户@dazed-and-confused在问题的评论中与您分享,您必须使用'rol_id' => $data['rol_id']
。那是你的 fix/solution.
现在,我将进一步说明原因:
Any form
you send to any URL (form's action
), it is going to send any input
, textarea
and select
. But these elements MUST have a name
attribute, in your case it would be name="rol_id"
(<select class="form-select" name="rol_id" id="rol_id">
).
因此,要读取控制器中的任何这些元素,您必须使用 $request->input('NAME_OF_ELEMENT')
,例如:$request->input('email')
.
您还可以直接发送其他数据类型,例如 string
s、boolean
s、number
s(整数、浮点数等),但您主要需要执行 AJAX 调用(例如使用 axios
)。
我有以下问题,如何在我的 register.blade.php
上获取 select 的值?
当用户注册时,他应该能够 select 一个 role
,每个 role
都有一个 id
,一旦他点击 submit
role id
按钮应分配给 users
table 上的 rol_id
。
但是我不知道如何在 RegisterController
上使用 create
方法后获取 selected id
的值。
register.blade.php
的一部分 select:
<div class="form-group row">
<label for="rol_id" class="col-md-4 col-form-label text-md-right">Rol:</label>
<div class="col-md-6">
<select class="form-select" name="rol_id" id="rol_id">
<option value="2">User</option>
<option value="3">Editor</option>
<option value="1">Admin</option>
</select>
</div>
</div>
我应该在 rol_id
上放什么?这是 create
方法,我应该在其中分配角色 selected:
id
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\Models\User
*/
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'rol_id' =>
]);
return $user;
}
如果你需要更多methods/classes我会提供。
更新:我还面临另一个问题,一旦创建了一个用户,rol_id 就会被分配,但是我有另一个 table 叫做 role_user,其中有用户 ID 和rol id,如果用户只能有一个角色,那么拥有那个枢轴就没有多大意义了table对吗?
谢谢!
由于用户@dazed-and-confused在问题的评论中与您分享,您必须使用'rol_id' => $data['rol_id']
。那是你的 fix/solution.
现在,我将进一步说明原因:
Any
form
you send to any URL (form'saction
), it is going to send anyinput
,textarea
andselect
. But these elements MUST have aname
attribute, in your case it would bename="rol_id"
(<select class="form-select" name="rol_id" id="rol_id">
).
因此,要读取控制器中的任何这些元素,您必须使用 $request->input('NAME_OF_ELEMENT')
,例如:$request->input('email')
.
您还可以直接发送其他数据类型,例如 string
s、boolean
s、number
s(整数、浮点数等),但您主要需要执行 AJAX 调用(例如使用 axios
)。