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').

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