Symfony3.4 формы ошибок отображаются дважды - PullRequest
0 голосов
/ 27 мая 2019

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

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

{{ 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) }}

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

enter image description here

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

enter image description here

Каким-то образом нижнее сообщение об ошибке приходит от {{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(),
        ]);
    }
}

Template {% extends '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 %}

Ответы [ 2 ]

3 голосов
/ 27 мая 2019

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

1 голос
/ 28 мая 2019

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

...