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' =&gt; $data['rol_id'] 【参考方案1】:

由于用户@dazed-and-confused在问题的cmets中与您分享,您必须使用'rol_id' =&gt; $data['rol_id']。那是你的修复/解决方案。

现在,我将详细说明原因:

任何form你发送到任何URL(表单的action),它将发送任何inputtextareaselect。但是这些元素必须有一个name 属性,在你的情况下它应该是name="rol_id" (&lt;select class="form-select" name="rol_id" id="rol_id"&gt;)。

因此,要读取控制器中的任何这些元素,您必须使用 $request-&gt;input('NAME_OF_ELEMENT'),例如:$request-&gt;input('email')

您也可以直接发送其他数据类型,例如strings、booleans、numbers(整数、浮点数等),但您主要需要进行 AJAX 调用(使用 axios,例如示例)。

【讨论】:

感谢您的解释!那么在 $data 中,我们可以找到从表单发送的所有信息?我会做一个 dd($data) 来查看所有内容。感谢您的帮助! 如果这是您要查找的内容,请将此答案标记为已接受并 +1

以上是关于Laravel - 如何获取选择值并将其传递给 RegisterController create()的主要内容,如果未能解决你的问题,请参考以下文章

在 MVC/Razor 中,如何获取多个复选框的值并将它们全部传递给控制器​​?

如何从文本字段中获取值并将其传递给变量?

从输入字段中获取一个值并将其传递给 Paypal

有没有办法获取选项标签值并将其传递给车把中的助手?

如何获取当前视图HTML源并将其作为String传递给JSF ManagedBean

我如何传递从另一个模型获取的角色数组以在 laravel 中注册表单