我正在将CakePhp 1.1升级到1.2(及更高版本)......最后。
我遇到表单验证问题。 我从文档中了解到我发现$ html-> tagErrorMsg已弃用,需要更改为$ form->错误。
我在所有地方都这样做了,但错误没有显示出来。它们在我的1.1版本中运行良好。
以下是.ctp的代码
.ctp用于:
<div class="column span-5">
<?php echo $html->input('Account/firstname', array('size' => 20, 'class'=>'span-4 first last txt')); ?>
</div>
<div class="column span-3 last"><span class="my_error"><?php echo $html->tagErrorMsg('Account/firstname', 'Please enter a first name.');?></span></div>
</div>
.ctp现在:
<div class="column span-5">
<?php echo $form->input('Account/firstname', array('size' => 20, 'class'=>'span-4 first last txt')); ?>
</div>
<div class="column span-3 last"><span class="my_error"><?php echo $form->error('Account/firstname', 'Please enter a first name.');?></span></div>
</div>
在模型中(account.php): 我把它改成了:
var $validate = array(
'firstname' => VALID_NOT_EMPTY,
);
TO:
var $validate = array(
'firstname' => 'notEmpty',
);
我做错了什么? 您能否在1.2及更高版本中包含正确的表单验证示例?
答案 0 :(得分:2)
我明白了。 1.1和1.2之间还有一些约定更改
在控制器中,我不得不添加:
$this->Account->set($this->data);
if ($this->Account->validates()) {
// validated logic
} else {
// didn't validate logic
$errors = $this->Account->validationErrors;
}
然而,这也没有做到。 我还必须删除ctp文件中的“帐户/”引用。
这是正确的ctp:
<div class="column span-5">
<?php echo $form->input('firstname', array('size' => 20, 'class'=>'span-4 first last txt')); ?>
</div>
<div class="column span-3 last"><span class="my_error"><?php echo $form->error('firstname', 'Please enter a first name.');?></span></div>
</div>
事实证明我的控制器也没有使用复数约定命名。所以我必须添加它,以便让我的$ form-&gt; create()正常工作。
<?php echo $form->create('Account', array('action' => 'register')); ?>
它位于ctp中表单的开头而不是
<form action="<?php echo $html->url('/account/register/'); ?>" method="post">