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'
    )
);

用户名字段被正确验证,但省 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 的经验表明,当您开始混合语法时,验证会很麻烦(您的一个字段有一个嵌套数组,而另一个没有)。我确信正在发生的事情有一些押韵或原因,但我并没有真正深入研究,通常只是反复试验。

尝试这个:

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 回答