CakePHP验证始终如实

时间:2011-12-29 14:11:50

标签: validation cakephp

我在最后一个小时左右一直在努力解决这个问题,想知道是否有些新鲜的眼睛可以提供帮助。

模型

class User extends AppModel {
public $name = 'User';
public $validate = array(
    'email' => array(
        'valid' => array(
            'rule' => 'email',
            'message' => 'The email is not valid'
        ),
        'required' => array(
            'rule' => 'notEmpty',
            'message' => 'Please enter an email'
        )
    )
);
}

控制器

class UserController extends AppController {

var $uses = array('User');

function index(){
    $users = $this->User->find('all');
    $this->set(compact('users'));
}

public function add() {
    $this->set('title_for_layout', 'Add new user');

    if(isset($this->data) && !empty($this->data)) {
        $this->User->set($this->data);
        $this->log($this->User->invalidFields(), "debug");

        if($this->User->validates()){
            if ($this->User->save($this->data)) {

                $this->Session->setFlash("Added " . $this->data['User']['name']);
                $this->redirect('index');
            }
        } else {
            $this->Session->setFlash('There are errors with your form submit, please see below.');
        }

    }
}

}

查看

<?php
    echo $this->Form->create('User'); 
    echo $this->Form->input('name', array('label' => 'Name'));
    echo "<div class='clear'></div>";
    echo $this->Form->input('email', array('label' => 'Email'));
    echo "<div class='clear'></div>";
    echo $this->Form->button('Reset', array('type' => 'reset'));
    echo $this->Form->button('Add Useer', array('type' => 'submit'));
    echo $this->Form->end(); 
?>

但我从来没有收到无效的电子邮件字段?我错过了一些明显的东西吗?

如果它有任何区别,这是一个插件我正在开发,所以它不直接坐在app /但在app / Plugins

由于

编辑:所以我现在一直在努力解决这个问题,但仍然没有快乐。有一点我注意到,当我打印出模型细节时(使用var_dump($ this-&gt; User)),[validate]数组为空。例如:

[validate] => Array
    (
    )

[validationErrors] => Array
    (
    )

我认为这就是问题所在,即使我已经声明了我的$ validate数组,它也会被覆盖?有没有人遇到过这个?任何解决方案?

2 个答案:

答案 0 :(得分:0)

public $validate = array(
    'email' => array(
        'valid' => array(
            'rule' => array('email'),
            'message' => 'The email is not valid'
        ),
        'required' => array(
            'rule' => array('notEmpty'),
            'message' => 'Please enter an email',
            'allowEmpty' => false
        )
    )
);

尝试将规则添加为数组,并在所需的验证中将'allowEmpty'键设置为false。

答案 1 :(得分:0)

该死!很简单。如果我在http://book.cakephp.org/1.3/en/view/1114/Plugin-Models正确地阅读了食谱,它会告诉我

  

如果您需要在插件中引用模型,则需要将插件名称包含在模型名称中,并用点分隔。

因此..

var $uses = array('Plugin.User');

有效..希望这有助于其他人!