Cakephp 2. + $ this-> Model-> validates();总是回归真实

时间:2014-03-13 17:44:50

标签: validation cakephp controller

我搜索了stackoverflow。大多数问题类似于这个问题,但它对我没有帮助。我已经阅读了cakephp 2.0的文档,但仍无法找到答案。

我的问题是:我在视图中有单独的表单。每个帖子都有不同的$ this-> request->数据。这就是我想要的。我希望每个表单都使用此模型的验证子集。但问题是他们总是“回归真实”。即使我已经指定了fieldList。

查看:

    <?php echo $this->Form->create('User'); ?>
    <?php echo $this->Form->input('Postcode');?>
    <?php echo $this->Form->input('Postcodeletter');?>
    <?php echo $this->Form->submit('Submit');?>
    <?php echo $this->Form->end();?>

    <?php echo $this->Form->create('User'); ?>
    <?php echo $this->Form->input('Password');?>
    <?php echo $this->Form->input('checkPassword');?>
    <?php echo $this->Form->submit('Submit');?>
    <?php echo $this->Form->end();?>

控制器:

unset($this->request->data['User']['Id']);
$this->User->set($this->request->data);

if ($this->User->validates(array('fieldList' => array('Postcode')))) {

            //valid

            } else {
           //error
    }

型号:

    class User extends AppModel {

public function beforeSave($options = array()){
    if(isset($this->data['User']['Password'])){
        $this->data['User']['Password'] = AuthComponent::password($this->data['User']['Password']);
    }
    return true;
}
public $primaryKey = 'Id';

public $validate = array(

   'Firstname' => array(
            'rule' => 'notEmpty',
            'allowEmpty' => false,
            'on' => 'create',
            'message' => '*Vult uw voornaam in' 
    ),
'Postcode' => array(
        'numeric' => array(
            'rule' => 'numeric',
            'allowEmpty' => false,
            'on' => 'create',
            'message' => 'Needs to be numbers'  
            ),
        'minLength' => array(
            'rule' => array('minLength',4),
            'allowEmpty' => false,
            'on' => 'create',
            'message' => 'Min 4 numbers'
            )
          )

);// end $validate

}

在if-statement&#39;中有没有我做错的事情?

Ps:我缩短了我的密码,我认为问题很明确,我很抱歉我的英语很差。

更新:

添加$this->User->set($this->request->data);
现在添加了unset($this->request->data['User']['Id'])

2 个答案:

答案 0 :(得分:0)

Core-Config中的Debug-Level是否设置为2? (应用程序/配置/ core.php中)

您可以在控制器中将此输出添加到您的问题中吗?

// Put this before your If-Statement

debug( $this->User->invalidFields(); );

// You may copy the rendered output

我不知道您的软件,但是有什么帮助我经常弄清楚为什么蛋糕的行为与我的期望相反,就是使用PHP-IDE和X-Debug调试我的代码。

答案 1 :(得分:0)

如果没有正当理由,请不要使用'on' => 'create'。 在你的情况下,它不是。

您可能希望始终验证minLength或notEmpty,即使在编辑时也是如此。