Передайте ограничения проверки формы для просмотра - PullRequest
0 голосов
/ 04 апреля 2019

Я хочу передать ограничения проверки формы (которые представлены в аннотациях) представлению как атрибуты. Например:

Атрибут:

   /**
     * @Assert\NotBlank()
     * @Assert\Regex("/^[ a-zA-Z0-9_.-]*$/")
     * @Assert\Length(min="8", max="64")
     */
    public $name;

Отобразит эти атрибуты во входных данных как:

 <input type="text" data-validator-required data-validator-pattern="/^[ a-zA-Z0-9_.-]*$/" data-validator-min="8" data-validator-max="64" name=../> 

Я построил TypeExtension, который должен преобразовывать ограничения в атрибуты в методе buildView. Но я не могу найти, как получить предоставленные ограничения, это возможно, или форма читает эти ограничения только при проверке?

Как я представляю, что эту проблему нужно решить (шаг получения ограничений проверки неизвестен.)

class ValidatorExtension extends AbstractTypeExtension
{
    /**
     * @inheritdoc
     */
    public function getExtendedType()
    {
        return FormType::class;
    }

    /**
     * @inheritdoc
     */
    public function buildView(FormView $view, FormInterface $form, array $options)
    {
        $constraints = $this->getValidationConstrains() // ???

        foreach ($constraints as $constraint) {
            // parse constraint etc..
            $view->vars['attr']['data-validation-'.$constraint] = $constraint;
        }
    }
}
...