CakePHP元素显示验证错误

时间:2012-06-08 03:27:00

标签: validation cakephp

我正在尝试在表单顶部显示验证错误摘要,而不是在每个输入旁边。

我没有看到任何内置的表单助手来执行此操作,因此我决定创建一个view元素来执行此操作。但是,$this->Form->validationErrors不是错误消息的平面数组,所以我不能只是遍历它并打印出验证错误。这是一个var_dump,在一个字段上只有一个验证错误:

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

因此,如果不知道字段名称或以某种方式展平数组,我就无法遍历。我必须要有一种更容易的方法来做到这一点。

2 个答案:

答案 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'));