Я создаю свой собственный конструктор форм, используя 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
]);
}
Когда время я отправлю свою форму. Это не показывает сообщение об ошибке.
Вы пытаетесь добавить форму после публикации,
Вам нужно использовать события
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 }
Других решений пока нет …