Скажем, у меня есть поле, которое похоже на это в представлении:
<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>
Я похож, чтобы сделать что-то, любят, перемещаются, отделение сообщения об ошибке ко всей другой части страницы скорее затем имеют его внутри с тем же <литий> как само поле. Каков был бы самый прямой способ сделать это?
$this->set('validationErrorsArray', $this->ModelName->invalidFields());
В ваших представлениях будет $ validationErrorsArray
.
ОБНОВЛЕНИЕ (сентябрь 2014 г.):
Из представления
Из CakePHP 2.3 вы можете получить доступ к массиву ошибок проверки из представления :
$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
}