【发布时间】:2014-03-13 17:44:50
【问题描述】:
我已经通过 stackoverflow 进行了搜索。大多数问题类似于这个问题,但它对我没有帮助。我已经阅读了 cakephp 2.0 的文档,但仍然找不到我的答案。
我的问题是:我在视图中有单独的表单。每个帖子都有不同的 $this->request->data。这是我想要的。我希望每个表单都使用该模型的验证子集。但问题是它们总是“回归真实”。即使我已经指定了 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 语句”中做错了什么吗?
Ps:我已经缩短了我的代码,我认为问题很清楚,我很抱歉我的英语不好。
更新:
已添加$this->User->set($this->request->data);
添加了unset($this->request->data['User']['Id']) 现在它可以工作了。
【问题讨论】:
-
数据库字段叫什么?
-
其余代码在哪里? validates() 永远不会单独工作。它总是需要先将数据传递给模型。
-
@cornelb |名字 |邮编 |
-
@mark 我忘了 $this->User->set($this->request->data); ,我最近设置了这个,还在调试。但我认为这是这里的东西。
-
您应该向我们展示 $this->request->data 中的发布数据以及 $this->User->validationErrors 在 validates() 调用之后包含的内容。
标签: validation cakephp controller