如何进行CAKEPHP验证?

时间:2016-01-04 11:11:58

标签: cakephp cakephp-2.0 cakephp-1.3 cakephp-2.3 cakephp-2.1

如果条件为真,则应显示“已退出”的错误消息,否则应显示“成功”消息。

是否可以将类似的验证添加到模型部分:

$name = $_POST["name"];
$validation_sql = "SELECT COUNT(*) > 0 FROM college WHERE status='2' AND name='$name'"; 

3 个答案:

答案 0 :(得分:0)

您可以使用hasAny()作为解决方案:

$conditions = array(
    'status'=>'2',
    'name'=>$name
);
if ($this->XXXXXXX->hasAny($conditions)){
    //do something
}
如果找到其他true

hasAny 将返回false

  

注意:版本3.x中没有hasAny

答案 1 :(得分:0)

您可以在模型中添加服务器验证,如:

public $validate = array(
    'name' => array(
        'rule' => array('isUnique', array('name'), false),
        'message' => 'This name has already been used.'
    )
);

答案 2 :(得分:0)

建议不要在CakePHP中使用$ _POST,而是使用控制器中的Request对象来访问POST请求给出的数据:

$this->request->data['College']['name'];

然后可以将此信息传递给验证它的模型。

如果由CakePHP表单助手创建了post请求,您不需要访问它 - 您可以直接将数据传递给模型实例的save方法(参见CakePHP Handbook - Saving your data)。 / p>

if ($this->College->save($this->request->data)) {
// handle the success (Normally success flash)
}
debug($this->College->validationErrors); //Normally error flash - if FormHelper is used the error messages are automatically shown beside the input elements

可以使用Bake Console添加验证,也可以通过将validation rules添加到College Model代码来手动添加验证:

public $validate = array(
    'name' => array(
        'rule' => 'isUnique',
        'message' => 'This username has already been taken.'
    )
);