我搜索了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'])
。
答案 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,即使在编辑时也是如此。