3

カスタム フォーム デザインの HTML と Yii2 で正常に動作しますが、テキスト ボックス内のデータのみがデータベースに入り、ドロップダウン ボックス内のデータはデータベースに入りません。

サンプルコード:

<form id="form-signup" action="/frontend/web/index.php?r=site%2Fsignup" method="post" role="form">
<input type="text" class="form-control" id="inputFirstName" name="SignupForm[firstName]" placeholder="Type First Name">

    <select onchange="getCountList(this.value)" id="inpCountry" name="SignupForm[region]" class="gwt-ListBox stdTextWidth">
                            <option value="">Select Region</option>
                            <option value="1">Australia and the Pacific</option>
                            <option value="2">Africa</option>
                            <option value="51">Asia</option>
                            <option value="3">Europe</option>
                            <option value="4">North America</option>
                            <option value="5">South America</option>
                          </select>
    </form>

フォームを送信すると、名前はデータベースに入りますが、地域 ID はデータベースに入りません。

私のモデル:

public function signup()
    {
        if ($this->validate()) {
            $user = new User();
            $user->FirstName = $this->firstName;
            $user->UserRegionID = $this->region;
            if ($user->save()) {
                return $user;
            }
        }

        return null;
    }

デバッガーでは、データがフォームによって送信されていることを確認できますが、データベースには保存されていません。

[
    'firstName' => 'Pen'
    'region' => '1'
]

テーブル名は User で、フィールドはFirstNameandですUserRegionID

4

1 に答える 1

2

一部のモデル属性を検証したくない場合は、それらを大量に割り当てるために、少なくとも明示的にそれらをsafeとしてマークする必要があります:

public function rules()
{
    ['UserRegionID', 'safe'],
}

検証をよりよく理解するには、次の公式ドキュメントのセクションをお読みください。

于 2015-02-15T10:32:23.847 に答える