У меня есть форма с полями автор и сообщение и проверкой Непусто() для обоих.
В ветке я делаю так:
{{ 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) }}
Если я нажму кнопку Сохранять с пустыми полями Я ЖДУ, чтобы увидеть это:
Но я получаю это:
Каким-то образом нижнее сообщение об ошибке исходит от {{ 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_errors в вашем шаблоне, либо переопределить блок form_label.
Вы можете использовать form_row (как предлагает @Adrien в комментариях), так как нет form_errorsвызов
Спасибо за ссылки. Это было именно то, что я хотел.
Вы явно добавили form_errors, тогда как сообщение об ошибке уже отображается через form_label. либо вы можете удалить form_errors или form_label.
stackoverflow.com/q/56338792/8631622 Пожалуйста, рассмотрите эту проблему. Я сделал все, что мог. Но я не смог решить эту проблему @Mitesh Vasava
Может быть, вместо этого вы могли бы использовать form_row, нет?