2012-06-08 4 views
1

Я пытаюсь отобразить сводку ошибок проверки в верхней части формы, а не рядом с каждым входом.Элемент CakePHP для отображения ошибок проверки

Я не видел встроенного помощника формы для этого, поэтому я решил создать элемент вида, чтобы сделать это. Однако $this->Form->validationErrors не является плоским массивом сообщений об ошибках, поэтому я не могу просто пропустить его и распечатать ошибки проверки. Вот var_dump с ошибкой только один проверки на одном поле:

array(1) { [0]=> &array(1) { ["terrcode"]=> array(1) { [0]=> string(30) "Please enter a territory code." } } }

Так что я не могу перебрать, что, не зная имена полей или уплощение массив каким-то образом. Там должен быть более простой способ сделать это, что мне не хватает.

ответ

4

Сведения массива, кажется, быть способ пойти, и, к счастью, у CakePHP есть Set::flatten.

Вот errorSummary.ctp я придумал:

<?php 
$errors = $this->Form->validationErrors; 
$flatErrors = Set::flatten($errors); 
if(count($errors) > 0) { ?> 
<div class="errorSummary"> 
<ul> 
<?php foreach($flatErrors as $key => $value) { ?> 
    <li><?php echo($value); ?></li> 
<?php } ?> 
</ul> 
</div> 
<?php }?> 
3

Одним из способов были бы передать массив полей, чтобы использовать для элемента, а затем цикл над ними и называют:

foreach($fieldsToShowValidationFor as $field) { 
    echo $this->Form->error($field); 
} 

Передайте массив с помощью

Смежные вопросы