1

Cakephp バージョン 2.3.0 の新しいコピーをダウンロードしたばかりで、作成したばかりのフォームの選択フィールドを検証しようとしています。

echo $this->Form->input('province_id', array('empty' => '- select -', 'options' => $options));
echo $this->Form->input('username');

そして検証:

public $validate = array(
    'username' => array(
        'required' => array(
            'rule' => array('notEmpty'),
            'message' => 'A username is required'
        )
    ),

    'province_id' => array(
        'rule' => 'notEmpty',
        'message' => 'Select something'
    )
);

ユーザー名フィールドは正しく検証されていますが、province_id は無視されています。それは何でしょうか?

4

3 に答える 3

2

次のように書く必要があります。

public $validate = array(
    'username' => array(
        'required' => array(
            'rule' => array('notEmpty'),
            'message' => 'A username is required'
        )
    ),
    'province_id' => array(
        'required' => array(
            'rule' => array('notEmpty'),
            'message' => 'Select something'
        )
    )
);
于 2013-02-10T19:20:56.917 に答える
1

フォーム ヘルパーの宣言は問題ないようです。

Cake での私の経験では、構文を混在させ始めると、検証がうまくいかないことがわかります (フィールドの 1 つにはネストされた配列があり、もう 1 つにはありません)。何が起こっているのかには何らかの韻や理由があると確信していますが、私はそれほど深く掘り下げたわけではなく、通常は試行錯誤を行うだけです.

これを試して:

public $validate = array(
    'username' => array(
        'rule' => 'notEmpty',
        'required' => true,
        'message' => 'A username is required'
    ),

    'province_id' => array(
        'rule' => 'notEmpty',
        'required' => true,
        'message' => 'Select something'
    )
);
于 2014-12-08T18:10:07.150 に答える
0

遅いほうがいいです。これを試してください:

public $validate = array(
    'username' => array(
        'required' => array(
            'rule' => array('notEmpty'),
            'message' => 'A username is required'
        )
    ),
    'province_id' => array(
        'required' => array(
            'rule' => array('myOwnValidationRule'),
            'message' => 'Select something'
        )
    )
);

function myOwnValidationRule($data)
{ 
    if($data["province_id"] != 'empty')
    {
        return true;
    }
}
于 2013-07-04T13:57:57.583 に答える