【发布时间】:2013-03-22 07:53:26
【问题描述】:
我正在尝试在 Symfony2 中创建一个带有文本输入字段的表单,该字段接受一个字符串,该字符串由 6 位数字后跟短划线后跟 4 位数字(例如 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');
...
}
}
来自树枝模板:
<form action= ... >;
{{ form_row(form.cpr) }}
...
</form>
这是浏览器源代码的样子——注意 pattern 和 maxlength 属性:
我想使用自己的标签而不是默认的,所以我更改了表单字段定义:
KursistType 类扩展 AbstractType { 公共函数 buildForm(FormBuilderInterface $builder, array $options) { $builder->add('cpr','text', array('label' => 'CPR')); ...但是现在看浏览器源码的时候,pattern和maxlength属性都没有了:
有没有办法在不删除这些属性的情况下使用 FormBuilderInterface 修改标签?
【问题讨论】:
-
我看起来像是 Symfony2 的 bug,应该可以正常工作...
标签: symfony symfony-forms