1

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

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

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

所以我不能在不知道字段名称或以某种方式展平数组的情况下循环遍历它。必须有一种更简单的方法来做到这一点,我错过了。

4

2 回答 2

4

一种方法是将要使用的字段数组传递给元素,然后遍历它们并调用:

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

通过数组传递

$this->element('validation_errors', array('fieldsToShowValidationFor' => array('id', 'etc'));
于 2012-06-08T05:53:09.970 回答
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 }?>
于 2012-06-10T20:19:29.850 回答