簡體   English   中英

Laravel 6:如何在注冊時將復選框值傳遞到數據庫用戶表中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM