Laravel - 如何获取选择值并将其传递给 RegisterController create()
Posted
技术标签:
【中文标题】Laravel - 如何获取选择值并将其传递给 RegisterController create()【英文标题】:Laravel - How to get select value and pass it to RegisterController create() 【发布时间】:2021-09-01 16:12:36 【问题描述】:我有以下问题,如何获取我的register.blade.php
上的选择值?
当用户注册时,他应该能够选择role
,每个role
都有一个id
,一旦他点击submit
按钮,role id
应该被分配给他的rol_id
users
表。
但是一旦我对RegisterController
使用create
方法,我不知道如何获取所选id
的值。
register.blade.php
的一部分有选择:
<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
方法,我应该在其中分配所选角色的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;
如果您需要更多方法/类,我会提供。
更新:我还面临另一个问题,一旦创建了用户,就会分配 rol_id,但是我有另一个名为 role_user 的表,其中有用户 ID 和 rol id,如果有这个数据透视表没有多大意义用户只能拥有一个角色吗?
谢谢!
【问题讨论】:
试试'rol_id' => $data['rol_id']
【参考方案1】:
由于用户@dazed-and-confused在问题的cmets中与您分享,您必须使用'rol_id' => $data['rol_id']
。那是你的修复/解决方案。
现在,我将详细说明原因:
任何
form
你发送到任何URL(表单的action
),它将发送任何input
、textarea
和select
。但是这些元素必须有一个name
属性,在你的情况下它应该是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
,例如示例)。
【讨论】:
感谢您的解释!那么在 $data 中,我们可以找到从表单发送的所有信息?我会做一个 dd($data) 来查看所有内容。感谢您的帮助! 如果这是您要查找的内容,请将此答案标记为已接受并 +1以上是关于Laravel - 如何获取选择值并将其传递给 RegisterController create()的主要内容,如果未能解决你的问题,请参考以下文章
在 MVC/Razor 中,如何获取多个复选框的值并将它们全部传递给控制器?