Как добавить динамическую ошибку для проверки формы Symfony с помощью createnamebuilder?

Я создаю свой собственный конструктор форм, используя createNamebuilder(), Именно так

$builder = $this->formFactory->createNamedBuilder($formName, $phoneNumberType, $data, $formOptions);

У меня есть PhoneNumberType. внутри я добавляю к стране-строителю номер и номер.

$builder->add('countryNumber', CountryCodeType::class);
$builder->add('number', NumberType::class);

Как добавить ограничение в число, которое должно быть обязательным? Я пытаюсь использовать это

public function buildForm(FormBuilderInterface $builder, array $options)
{
$contactNumber = $builder->getData();
$countryCode = null;
if ($contactNumber instanceof ContactNumber) {
$countryCode = $contactNumber->getCountryNumber();
}

$builder->add('countryNumber', CountryCodeType::class, ['data' => $countryCode]);
$builder->add('number', NumberType::class, [
'required' => true,
'constraints' => [new NotBlank(['message' => 'Phone number is required.'])]
]);
}

public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => ContactNumber::class,
'error_bubbling' => true
]);
}

Когда время я отправлю свою форму. Это не показывает сообщение об ошибке.

0

Решение

Вы пытаетесь добавить форму после публикации,
Вам нужно использовать события
https://symfony.com/doc/current/form/dynamic_form_modification.html

или вы можете добавить ограничения к объекту после отправки пустой формы данных, которые будут возвращать ошибки.

use Symfony\Component\Validator\Constraints as Assert;

class ContactNumber
{
/**
* @Assert\NotBlank()
* ..
*/
private $number
}

и framework.yaml

framework:
validation:      { enable_annotations: true }
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector