2

我正在将 CakePhp 1.1 升级到 1.2(及更高版本)......最后。

我在表单验证方面遇到问题。我从文档中了解到,我发现 $html->tagErrorMsg 已被弃用,需要更改为 $form->error 。

我在所有位置都这样做了,但没有显示错误。它们在我的 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,
    );

至:

   var $validate = array(
      'firstname' => 'notEmpty',
);

我究竟做错了什么?您能否在 1.2 及更高版本中包含正确表单验证的示例?

4

1 回答 1

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 文件中的“Account/”引用。

这是正确的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->create() 正常工作。

 <?php echo $form->create('Account', array('action' => 'register')); ?>

它位于 ctp 中表单的开头,而不是

<form action="<?php echo $html->url('/account/register/'); ?>" method="post">
于 2013-08-14T15:27:54.360 回答