我正在尝试在表单顶部显示验证错误摘要,而不是在每个输入旁边。
我没有看到任何内置的表单助手来执行此操作,因此我决定创建一个view元素来执行此操作。但是,$this->Form->validationErrors
不是错误消息的平面数组,所以我不能只是遍历它并打印出验证错误。这是一个var_dump,在一个字段上只有一个验证错误:
array(1) { [0]=> &array(1) { ["terrcode"]=> array(1) { [0]=> string(30) "Please enter a territory code." } } }
因此,如果不知道字段名称或以某种方式展平数组,我就无法遍历。我必须要有一种更容易的方法来做到这一点。
答案 0 :(得分: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 }?>
答案 1 :(得分:3)
一种方法是传递一个字段数组用于元素,然后遍历它们并调用:
foreach($fieldsToShowValidationFor as $field) {
echo $this->Form->error($field);
}
通过
传递数组$this->element('validation_errors', array('fieldsToShowValidationFor' => array('id', 'etc'));