gpt4 book ai didi

Symfony2 表单和 <input> 模式属性

转载 作者:行者123 更新时间:2023-12-04 05:04:08 25 4
gpt4 key购买 nike

我正在尝试在 Symfony2 中创建一个带有文本输入字段的表单,该字段接受一个由 6 位数字组成的字符串,后跟一个破折号,后跟四个数字(例如 123456-7890)。它确实有效,但我得到的 HTML 标记不一致,具体取决于我将字段添加到表单的方式。

这是来自实体:

class Kursist
{
...
/**
* @ORM\Column(type="string", length=11)
*/
protected $cpr;
....
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata->addPropertyConstraint('cpr', new NotBlank());
$metadata->addPropertyConstraint('cpr', new Regex(array(
'pattern' => '/^\d{6}-\d{4}$/',
)));
}

从表单定义:
class KursistType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('cpr');
...
}
}

从 Twig 模板:
<form action= ... >;
{{ form_row(form.cpr) }}
...
</form>

这就是浏览器源代码的样子——注意 pattern 和 maxlength 属性:


我想使用自己的标签而不是默认标签,所以我更改了表单字段定义:class KursistType extends AbstractType
{
公共(public)函数 buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('cpr','text', array('label' => 'CPR'));
...

但是现在看浏览器源码的时候,pattern 和 maxlength 属性都没有了:

有没有办法在不删除这些属性的情况下使用 FormBuilderInterface 修改标签?

最佳答案

这种不一致是由于 type options guessing当您没有向表单构建器提供有关字段的任何其他信息时,会发生这种情况。

禁用选项猜测时,您可以显式提供字段属性。

$builder->add('cpr','text', array('label' => 'CPR', 'pattern' => '\d{6}-\d{4}'));

甚至您可以保持启用选项猜测,但仅覆盖标签属性
$builder->add('cpr',null, array('label' => 'CPR'));

关于Symfony2 表单和 &lt;input&gt; 模式属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15740078/

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