[英]Laravel 6: How to pass checkbox value into database user table upon registration
我使用 Laravel 6 默認遷移表和 Auth 注冊控制器創建了一個注冊表單。 現在我想要兩種類型的帳戶,所以我在 HTML 表單中添加了一個復選框。 如果選中該復選框,則該帳戶的類型應與未選中該復選框時的類型不同。
數據庫表:
account_types (id, name)
users (id, name, email, password, account_type_id)
HTML
<label class="switch">
<input id="register-toggle-switch" name="account-type" type="checkbox" autocomplete="off" checked onclick="toggleswitch()">
</label>
注冊控制器.php
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
// 'account_type_id' => ['required']
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
if (isset($_POST['account-type']))
{
$account = '1';
}
else if(!isset($_POST['account-type']))
{
$account = '2';
}
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'account_type_id' => $account
]);
}
但是,這不起作用,因為它返回一個錯誤,說:“一般錯誤:1364 字段‘account_type_id’沒有默認值”,然后繼續顯示不包含‘account_type_id’或其值的嘗試查詢.
所以問題是:根據表單中復選框的狀態,如何將相應的 id 傳遞到注冊查詢中?
Laravel 在其模型上有大量賦值保護,它不會向插入查詢發送任何值,從而導致默認值錯誤。 確保您告訴User模型可以通過$fillable
變量傳遞account_type_id
。
在用戶模型上:
protected $fillable = [
'name', 'email', ... 'account_type_id'
];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.