0

嗨,我有一个带有数字字段的表格。我使用正则表达式来验证该字段。出于这个原因,我在元素中添加了模式属性。但是,当我使用 formText 时,它的 html 会转义正则表达式模式。

//inside the form _construct
$this->add(array(
            'name' => 'number',
            'type' => 'text',
            'options' => array(
                'label' => 'Number',
            ),
			'attributes' => array(
				'pattern' => '/^(\+)?((\d)+(-|\s)?)+$/',
				'maxLength' => '20',
				'id' => 'number',
			),
        ));

并以形式

<?php echo $this->formText($form->get('number')); ?>

那么结果就是

<input type="text" name="number" pattern="&#x2F;&#x5E;&#x28;&#x5C;&#x2B;&#x29;&#x3F;&#x28;&#x28;&#x5C;d&#x29;&#x2B;&#x28;-&#x7C;&#x5C;s&#x29;&#x3F;&#x29;&#x2B;&#x24;&#x2F;" id="number" value="" maxlength="20">

如何在不转义正则表达式模式的情况下将数字字段添加到我的表单中?

4

1 回答 1

1

表单视图助手应该以这种方式工作,提供一些基线安全功能和自动化的东西。因此,如果您不这样做,请不要使用它们:

<input type="<?php echo $form->get('number')->getType(); ?>" pattern="type="<?php echo $form->get('number')->getAttribute('pattern'); ?>" value="<?php echo $form->get('number')->geValue(); ?>">

不确定您需要显示什么,但它应该让您大致了解“我的”方法。您还可以手动转义值之类的东西:

$this->escape($form->get('number')->geValue())

如果您觉得这很乏味,您可以随时编写一个助手来执行此操作。您还可以使用选项来打开属性转义,但默认情况下启用它们是明智的。

于 2015-03-07T10:48:52.290 回答