传递表单验证约束以进行查看

时间:2019-04-04 15:14:58

标签: symfony symfony-forms symfony-validator

我想将表单验证约束(在批注中提供)作为属性传递给视图。例如:

属性:

   /**
     * @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;
        }
    }
}

0 个答案:

没有答案