Думаю, было бы очень полезно создать проверку формы на стороне клиента для компонентов symfony2 Form
и Validator
.
Лучший способ сделать это - передать ограничения проверки в представление формы.
С этой информацией можно было бы сделать шаблон, который отображает поле формы примерно так:
<div>
<label for="form_email">E-Mail</label>
<input
id="form_email" type="text" name="form[email]" value=""
data-validation-constraints='{"NotBlank":{},"MinLength":{"limit":6}}'
/>
</div>
В этом случае JavaScript должен был бы найти все <input>
элементы с атрибутом data-validation-constraints
и создать для них правильную проверку.
Чтобы передать ограничения валидации в представление формы, я подумал, что лучшим способом было бы создать расширение типа формы. В этом смысл моего вопроса: Это правильный путь? И как это возможно?
На данный момент мое расширение типа формы выглядит так:
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\Form\FormBuilder;
class FieldTypeExtension extends \Symfony\Component\Form\AbstractTypeExtension{
public function getExtendedType(){
return 'field';
}
public function buildView(FormView $view, FormInterface $form)
{
// at this point i didn't find a way to get the
// validation constraints out of the $form
// the `getAllValidationConstraints` here is just an example
$view->set('validation_constraints', $form->getAllValidationConstraints());
}
}
Как я могу получить все ограничения проверки, примененные к одному полю формы из объекта FormInterface?