如何在默认的不同位置显示CakePHP输入验证错误?

时间:2010-06-07 19:23:04

标签: cakephp validation

假设我在视图中看到了这样的字段:

<li class="bigfield">
  <?php echo $form->input('phone', array(
      'placeholder' => 'Phone',
      'label' => false,
      'between' => '<br />'
  )); ?>
</li>

如果我在此字段上有验证规则且验证失败,我会看到以下HTML:

<li class="bigfield">
  <div class="input text required error">
      <br>
      <input name="data[Appointment][email]" type="text" placeholder="Email" 
             maxlength="45" value="" id="AppointmentEmail" class="form-error">
      <div class="error-message">Please enter a valid email address</div>
  </div>
</li>

我想做一些事情,例如将错误消息div移动到页面的整个不同部分,而不是将其放在内部,并使用相同的&lt; li&gt;作为场地本身。这样做最直接的方法是什么?

3 个答案:

答案 0 :(得分:26)

只是更新旧帖子。

验证错误会自动传递给视图(正如@Angel S. Moreno指出的那样)

$this->validationErrors 

答案 1 :(得分:22)

In you controller

$this->set('validationErrorsArray', $this->ModelName->invalidFields());

您的观点中会有$validationErrorsArray


更新(2014年9月):

从视图中

从CakePHP 2.3,您可以访问view

中的验证错误数组
$this->validationErrors;

来自控制器

如果您尝试在控制器中保存数据,则可以通过以下方式访问验证错误:

$this->ModelName->validationErrors;

如果您想在保存前验证数据,请执行以下操作:

$this->ModelName->set($this->request->data);
if ($this->ModelName->validates()) {
    $this->ModelName->save();
} else {
    $errors = $this->ModelName->validationErrors;
    // handle errors
}

Validating Data from the Controller

答案 2 :(得分:4)

您可以使用控制器:

$this->Modelname->validationErrors['TheFieldYouWantToDisplay'] = 'This is not correct'

在你的情况下,你的控制器会是这样的:

$this->Appointment->validationErrors['email'] = 'Error message'

此代码只是为了即时生成自定义错误消息。但是你也可以在模型中定义$ validate,并像brancer描述它一样。