将CakePhp 1.1中的$ html-> tagErrorMsg更新为1.2

时间:2013-08-13 14:35:17

标签: forms validation cakephp cakephp-1.2

我正在将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及更高版本中包含正确的表单验证示例?

1 个答案:

答案 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">