Symfony2 (v2.3.6) でフォームを作成し、自動生成された HTML5 制約を利用しようとしています。
そこで、RegEx
制約付きのフィールドが 1 つだけの非常に単純なフォームを作成しました。
public function formAction()
{
$form = $this->createFormBuilder()->add('animalName', 'text', array(
'constraints' => new \Symfony\Component\Validator\Constraints\Regex('/(cat|dog)/')
))->getForm();
if ($this->getRequest()->isMethod('POST')) {
$form->bind($this->getRequest());
}
return $this->render('MeTestBundle:Default:form.html.twig', array('form' => $form->createView()));
}
そして、Twig では、異常なことは何もありません。
{% extends "::base.html.twig" %}
{% block body %}
{{ form(form) }}
{% endblock %}
さて、最終的な結果として、animalName
フィールドにはpattern
value の属性があると予想していました(cat|dog)
。このリンクにあるように、Symfony はhtmlPattern
この制約の を生成し (テストしたところ、 が返されますが、これで問題ありません)、この属性は、要素の HTML 属性.*(cat|dog).*
を使用してクライアント側の検証で使用されます。ただし、属性はありません。生成されたコードは次のとおりです。pattern
input
pattern
<input type="text" id="form_animalName" name="form[animalName]" required="required" />
pattern
少し調査した結果、属性の値を推測するのは であると思いますがSymfony\Component\Form\Extension\Validator\ValidatorTypeGuesser
、このサービスは初期化されません (die
コンストラクターを記述し、サービスが到達したかどうかを確認するようにコンテナーに強制しましたdie
)。
何か不足していますか?