【发布时间】:2014-04-27 09:40:38
【问题描述】:
在我的控制器中,我试图验证用户发送的一些数据,但奇怪的是,即使一切看起来都正确,验证也会失败:
if(isset($this->data['Cart'])) { //See below for what is in $this->data!!
$this->Cart->set($this->data);
if($this->Cart->validates()) {
这正是您在 CakePHP v1.3 中应该做的事情(参见 http://book.cakephp.org/1.3/en/The-Manual/Common-Tasks-With-CakePHP/Data-Validation.html)
模型:
class Cart extends AppModel
{
var $useTable = false;
var $validate = array(
'name' => array(
'rule' => 'notEmpty',
'required' => true,
'message' => 'Geben Sie Ihren Namen ein!'
),
'address' => array(
'rule' => 'notEmpty',
'required' => true,
'message' => 'Geben Sie Straße und Hausnummer ein!'
),
'city' => array(
'rule' => 'notEmpty',
'required' => true,
'message' => 'Geben Sie Postleitzahl und Ort ein!'
),
'email' => array(
'rule' => 'notEmpty',
'required' => true,
'message' => 'Geben Sie Ihre E-Mail-Adresse ein!'
)
);
}
var_dump($this->data) 的结果:
array(2) {
["amount"]=>
array(2) {
["san02l"]=>
string(1) "5"
["pp02l"]=>
string(1) "1"
}
["Cart"]=>
array(7) {
["company"]=>
string(13) "SomeCompany"
["name"]=>
string(10) "Lars Ebert"
["address"]=>
string(17) "Street No"
["city"]=>
string(18) "12345 Somewhere"
["phone"]=>
string(10) "0123456789"
["email"]=>
string(22) "mail@example.com"
["comments"]=>
string(26) "Dies ist
nur
Ein Test!!"
}
}
每次都会显示所有四个错误消息。我习惯于 CakePHP v2,所以也许我忽略了一些非常明显的东西?为什么不验证?
更新
我还按照天行者的建议尝试了 $this->Cart->set($this->data['Cart']); 和 $this->Cart->set(array('Cart' => $this->data['Cart']));。仍然会显示所有四个错误。
也很奇怪:尝试$this->Cart->validates(array('fieldList' => array('name'))) 时,会显示所有四个错误。在这种情况下不应该只显示一个错误吗?
问题似乎独立于$this->data 发生。我只是尝试手动设置名称:
if(isset($this->data['Cart'])) {
$this->Cart->set($this->data['Cart']);
$this->Cart->set('name', 'Lars Ebert');
if($this->Cart->validates()) {
这仍然会导致显示所有错误消息。至少名称错误不应该消失吗?
【问题讨论】:
-
你的意思是即使你通过了正确的数据验证失败?
-
没错,年轻的天行者!您在底部看到的数据与我传递给
->set()的数据相同。 -
你传入的第一个数组是什么?也许这把事情搞砸了。我在想如果你只通过
$this->data['Cart']也许它可以通过。 -
不,那是 Cake v2。在 v1 中,它只有
$this->data。此外,var_dump($this->data)显示正确的数据,var_dump($this->Cart)显示其中的数据! -
您是否尝试过使用 fieldList 选项?尝试只验证一个字段?
标签: validation cakephp cakephp-1.3