Ошибки формы Symfony3.4 отображаются дважды

У меня есть форма с полями автор и сообщение и проверкой Непусто() для обоих.

В ветке я делаю так:

{{ form_start(form) }}

    {{ form_errors(form.author) }}
    {{ form_label(form.author) }}
    {{ form_widget(form.author) }}


    {{ form_errors(form.message) }}
    {{ form_label(form.message) }}
    {{ form_widget(form.message) }}

{{ form_end(form) }}

Если я нажму кнопку Сохранять с пустыми полями Я ЖДУ, чтобы увидеть это:

Ошибки формы Symfony3.4 отображаются дважды

Но я получаю это:

Ошибки формы Symfony3.4 отображаются дважды

Каким-то образом нижнее сообщение об ошибке исходит от {{ form_label(...) }}. Я говорю это, потому что, если я закомментирую метки и использую статический HTML для меток, результат будет таким же, как на первом изображении.

Я бы предпочел не использовать статический HTML для меток, но я не понимаю, откуда взялись вторые сообщения об ошибках.

Ниже моего кода:

Форма

class TestFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('author', TextType::class, ['required' => false, 'constraints' => [new NotBlank()]])
            ->add('message', TextType::class, ['required' => false, 'constraints' => [new NotBlank()]])
            ->add('save', SubmitType::class)
        ;
    }
}

Контроллер

class TestController extends Controller
{
    /**
     * @Route("/testing", name = "test")
     * @param Request $request
     * @return RedirectResponse|Response
     */
    public function index(Request $request)
    {
        $form = $this->createForm(TestFormType::class);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid())
        {
            return $this->redirectToRoute('test');
        }

        return $this->render('test/index.html.twig', [
            'form' => $form->createView(),
        ]);
    }
}

Шаблон {% расширяет 'base.html.twig' %} {% block title %}Здравствуйте, TestController!{% endblock %}

{% block body %}

    <p>This is a test...</p>

    {{ form_start(form) }}

        {{ form_errors(form.author) }}
        {{ form_label(form.author) }}
        {{ form_widget(form.author) }}

        {{ form_errors(form.message) }}
        {{ form_label(form.message) }}
        {{ form_widget(form.message) }}

    {{ form_end(form) }}

{% endblock %}

Может быть, вместо этого вы могли бы использовать form_row, нет?

Adrien 27.05.2019 16:56

@ Адриан, да, но я все равно хотел знать, почему это происходит.

callmebob 28.05.2019 09:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
2
793
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Блок ошибок темы начальной загрузки — интегрирован в этикетку. Поэтому вам нужно либо удалить блок form_errors в вашем шаблоне, либо переопределить блок form_label. Вы можете использовать form_row (как предлагает @Adrien в комментариях), так как нет form_errorsвызов

Спасибо за ссылки. Это было именно то, что я хотел.

callmebob 28.05.2019 09:16

Вы явно добавили form_errors, тогда как сообщение об ошибке уже отображается через form_label. либо вы можете удалить form_errors или form_label.

stackoverflow.com/q/56338792/8631622 Пожалуйста, рассмотрите эту проблему. Я сделал все, что мог. Но я не смог решить эту проблему @Mitesh Vasava

Pie 29.05.2019 13:16

Другие вопросы по теме