Я хочу передать ограничения проверки формы (которые представлены в аннотациях) представлению как атрибуты. Например:
Атрибут:
/**
* @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;
}
}
}