Symfony Валидация форм

scorpion-ds

Новичок
Добрый день!

Сейчас разбираюсь с SF2, для экспериментов использую, данную статью:
http://symfony.in.ua/part2-validators-and-forms.html

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

Подскажите, что может быть не так?
 

Lewik

Новичок
Последнее редактирование:

scorpion-ds

Новичок
Ну я это тоже читал, я использую последний вариант "PHP", но если настраивать через YAML, то конфиги подхватываются, но не ясно как сделать поле не обязательным, если я ставлю "Blank", то он требует пустое поле ...
 

Lewik

Новичок
Написал же "By default, the required option is set to true" Ну поставь его в false.
Я бы не рекомендовал "вариант php". Большинство юзают yml. Меньшинство xml. Я вот - xml - там автодополнение.
 

hell0w0rd

Продвинутый новичок
есть такой метод - setDefaults, там вы задаете умолчания. Так вот если required поставить в false - все поля по умолчанию будут не обязательны.
Касательно валидации - валидатор, это просто расширение и срабатывает он в момент собственно валидации.
 

hell0w0rd

Продвинутый новичок
Написал же "By default, the required option is set to true" Ну поставь его в false.
Я бы не рекомендовал "вариант php". Большинство юзают yml. Меньшинство xml. Я вот - xml - там автодополнение.
В проекте (не в либе) - лучший вариант ИМХО аннотации. Они поддерживаются phpstorm-плагином.
 

scorpion-ds

Новичок
Сейчас попробовал с YAML и Аннотациями, если использовать "NotBlank" то в обоих вариантах все нормально, а если использовать "MinLength", то ошибка:
Код:
[Semantical Error] The annotation "@Symfony\Component\Validator\Constraints\MinLength" in property Blogger\BlogBundle\Entity\Enquiry::$name does not exist, or could not be auto-loaded.
Для подключения пространства я использовал:
PHP:
use Symfony\Component\Validator\Constraints as Assert;
В PHP варианте, я делал так:
PHP:
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\MinLength;
use Symfony\Component\Validator\Constraints\MaxLength;
use Symfony\Component\Validator\Constraints\Length;
но он у меня почему-то вообще не работает.
 

scorpion-ds

Новичок
Вот такой код не работает:
Код:
Blogger\BlogBundle\Entity\Enquiry:
    properties:
        email:
            - NotBlank: ~
            - Email: ~
        name:
            - NotBlank: ~
            - MinLength: 3
Если убрать "- MinLength: 3", то все нормально.
 

hell0w0rd

Продвинутый новичок
Так а нет валидатора MinLength. Есть Length у которого можно указать min и max
 

scorpion-ds

Новичок
Так а нет валидатора MinLength. Есть Length у которого можно указать min и max
Точно, так и есть, спасибо.

Но остается проблема с вариантом "PHP", тут как бы по сути вопрос понимания в чем же проблема, метод "loadValidatorMetadata" вообще не вызывается.

Кстати, если параметры валидации задавать при создании элементов, то все в порядке.
 
Сверху