Symfony2 показывает ошибки формы рядом с полями и в верхней части формы - PullRequest
4 голосов
/ 18 ноября 2011

Как в Symfony2 показывать ошибки формы рядом с каждым полем И в верхней части формы, используя шаблоны веточек?

На данный момент мне удалось получить одно или другое, установив для error_bubbling значение true или false для каждого поля ...

Спасибо

Ответы [ 2 ]

2 голосов
/ 21 ноября 2011

Решение, которое я могу предложить вам, - это вторая, явная проверка вашего объекта и отправка ошибок в ваш шаблон.Таким образом, первая неявная проверка выполняется внутри объекта формы, и ошибки привязываются к полям (не используйте всплывающее окно с ошибками).Вторая проверка даст вам итератор на ошибки, и вы можете передать этот итератор в ваш шаблон, который будет отображаться в верхней части формы.После этого у вас будут ошибки в каждом поле, а также в верхней части формы.

Я предлагаю вам это на основе этого вопроса о StackOverflow.Отметьте этот конкретный ответ.

Вот набросок кода для контроллера (я ничего не тестировал):

// Code in a controller
public acmeFormAction(...) {
    // Form and object code

    // Get a ConstraintViolationList
    $errors = $this->get('validator')->validate( $user );

    return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
        'form' => $form->createView(),
        'errors' => errors,
    ));
}

и код в шаблоне:

{# Code in a twig template #}
<ul id="error-list">
    {% for error in errors %}
        <li> error.message </li>
    {% endfor %}
</ul>

{# Display your form as usual #}

Если помнитеправильно, есть способ извлечь все ошибки из формы, и в каждом поле по-прежнему должны быть установлены ошибки.Насколько я помню, это специальный атрибут в виде формы что-то вроде form.errors.Но я не могу вспомнить или найти какую-либо информацию об этом.Итак, на данный момент это лучший подход, который я могу найти.

0 голосов
/ 12 марта 2017

Что вы должны сделать, это использовать ошибки формы, которые уже доступны в виде переменных, как описано здесь:

https://stackoverflow.com/a/13047952/1041895

Пожалуйста, посмотрите на комментарий:

Используйте vars.errors в новых версиях или просто дамп поля формы, чтобы увидеть атрибуты. Потому что эта часть зависит от версии Symfony.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...