Сделать так, чтобы все ошибки проверки формы отображались вверху в symfony?

Я думаю, что могу упустить что-то здесь, что должно быть относительно распространенным. Как я могу сделать так, чтобы все ошибки проверки формы, включая ошибки, связанные с полем, отображались в верхней части формы (глобально)?


person James Skidmore    schedule 23.06.2009    source источник


Ответы (3)


Добавьте что-то вроде этого вверху вашего шаблона:

foreach($form->getWidgetSchema()->getPositions() as $widgetName)
{
  echo $form[$widgetName]->renderError();
}
person bb.    schedule 24.06.2009

Заблаговременно

<ul>
  <?php foreach($form->getWidgetSchema()->getPositions() as $widgetName): ?>
    <?php if($form[$widgetName]->hasError()): ?>
    <li><?php echo $form[$widgetName]->renderLabelName().': '.__($form[$widgetName]->getError()->getMessageFormat()); ?></li>
    <?php endif; ?>
  <?php endforeach;?>
</ul>
person Mailo Světel    schedule 05.11.2009

Если вы любите старую школу, как я (до Symfony 1.1), попробуйте

<?php if ($sf_request->hasErrors()): ?>
  <p>Please correct the following errors and try again:</p>
  <ul>
  <?php foreach($sf_request->getErrors() as $name => $error): ?>
    <li><?php echo $error ?></li>
  <?php endforeach; ?>
  </ul>
<?php endif; ?>
person sjobe    schedule 24.06.2009
comment
Также должно работать для 1.1+, я не проверял, но не вижу причин, по которым они не будут поддерживать обратную совместимость. - person sjobe; 24.06.2009
comment
Спасибо за ответ, sjobe. К сожалению, это не работает по какой-то причине в 1.2. - person James Skidmore; 24.06.2009