我想将表单验证约束(在批注中提供)作为属性传递给视图。例如:
属性:
/**
* @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;
}
}
}