Существует несколько способов сделать то, что вы хотите.
1) Вы можете сделать это прямо в форме. Как что:
use Symfony\Component\Validator\Constraints as Assert;
public function buildForm(FormBuilderInterface $builder, array $options)
{
$yourEntity = $builder->getData();
//here you start the field, you want to validate
$fieldOptions = [
'label' => 'Field Name',
'required' => true,
];
if ($yourEntity->getYourProperty != 'bla-bla-bla') {
$fieldOptions[] = 'constraints' => [
new Assert\NotBlank([
'message' => 'This is unforgivable! Fill the field with "bla-bla-bla" right now!',
]),
],
}
$builder->add('myField', TextType::class, $fieldOptions);
2) Другой способ - это сделать свой собственный обратный вызов проверки в вашей организации и играть с прямым утверждает там. Возможно, я думаю.
3) Но оптимальным способом, с моей точки зрения, является использование нескольких утверждений с группами проверки. Вам нужно указать Assert \ isMinor (groups = {"myCustomGroup"}) в поле дня рождения. И затем, в вашей форме:
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'validation_groups' => function (FormInterface $form) {
$yourEntity = $form->getData();
if ($yourEntity->role !== 3) {
return ['Default', 'myCustomGroup'];
}
return ['Default'];
},
Надеюсь, это будет полезно для вас.
Я попробую это и скажу вам, спасибо. – NicolaPez
Привет, я пытаюсь реализовать это, у меня есть одна проблема: вещи, которые я не понимаю, - это то, как вы получаете подтверждение для возврата как «myCustomGruop». Я указать Assert Малую как это: /** * @Assert \ Date() * @Assert \ GreaterThan ("- 18 лет") */ общественности $ рождения; поэтому я не знаю, как положить в этот возвращаемый массив. – NicolaPez
Я понимаю с этим http://symfony.com/doc/current/components/options_resolver.html и проверкой группы, и теперь все работает нормально. Спасибо за помощь – NicolaPez