gpt4 book ai didi

php - Symfony2 自动生成的 HTML5 约束不起作用

转载 作者:行者123 更新时间:2023-11-28 03:28:23 25 4
gpt4 key购买 nike

我正在尝试使用 Symfony2 (v2.3.6) 创建表单并利用自动生成的 HTML5 约束。

因此,我创建了一个非常简单的表单,其中只有一个带有 RegEx 约束的字段:

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 字段具有一个值为 (cat|dog)pattern 属性。正如this link中所说,Symfony会生成这个约束的htmlPattern(我测试过,它返回.*(cat|dog).*,没问题),这个属性会是通过在 input 元素上使用 pattern HTML 属性,用于客户端验证。但是没有pattern属性,生成的代码如下:

<input type="text" id="form_animalName" name="form[animalName]" required="required" />

经过一些研究,我认为负责猜测 pattern 属性值的是 Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser,但是这个服务从未初始化(我在它的构造函数中写了一个 die 并且还强制容器获取服务以检查是否到达 die )。

我错过了什么吗?

最佳答案

你能试试下面的代码吗:

   $form = $this->createFormBuilder()
->add('animalName', 'text', array(
'pattern' => '/(cat|dog)/'
))
->getForm();

我得到的呈现的 HTML:

<div id="form">
<div><label for="form_animalName" class="required">Animal name</label>
<input type="text" id="form_animalName" name="form[animalName]" required="required" pattern="/(cat|dog)/">
</div>
<input type="hidden" id="form__token" name="form[_token]" value="kAg4Ww2oH9WQX6fPSyvJd4pNx-xE7B4G0NbIXtUWWDY">
</div>

我得到的答案是: https://github.com/symfony/symfony/issues/3766请查看它以获取更多信息。

关于php - Symfony2 自动生成的 HTML5 约束不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19574014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com