首页 > 解决方案 > 未定义的数组键 - Laravel/Fortify 寄存器

问题描述

只是它在 Laravel 中的一个注册页面。如果它的老师不是学生,用户必须选中复选框。

因此,我尝试使用值 1 教师 0 学生,但我不知道如何在控制器中获取此值。

也尝试了下面的代码('role_id' => $input['role_id'],),当检查时它在数据库上返回“on”但未检查它会引发错误

未定义的数组键“role_id”

注册查看..

<div class="form-group form-check">
   <input type="checkbox" class="form-check-input" id="role_id" name="role_id" value="0" 
   <label class="form-check-label" for="exampleCheck1">Teacher</label>
</div>

强化控制器..

/**
 * Validate and create a newly registered user.
 *
 * @param  array  $input
 * @return \App\Models\User
 */
public function create(array $input)
{
    Validator::make($input, [
        'name' => ['required', 'string', 'max:255'],
        'email' => [
            'required',
            'string',
            'email',
            'max:255',
            Rule::unique(User::class),
        ],
        'password' => $this->passwordRules(),
    ])->validate();

    return User::create([
        'name' => $input['name'],
        'email' => $input['email'],
        'password' => Hash::make($input['password']),
        'role_id' =>  $input['role_id'],
    ]);
}

}

标签: phplaravelfortify

解决方案


关闭/>输入复选框

<div class="form-group form-check">
   <input type="checkbox" class="form-check-input" id="role_id" name="role_id" value="1"/>
   <label class="form-check-label" for="exampleCheck1">Teacher</label>
</div>

并在控制器中

return User::create([
        'name' => $input['name'],
        'email' => $input['email'],
        'password' => Hash::make($input['password']),
        'role_id' =>  $input['role_id']??0,
    ]);

推荐阅读