防止ZF2 formHelper转义属性

时间:2015-03-07 06:42:58

标签: zend-framework2 view-helpers html-escape

嗨我有一个带数字字段的表单。我使用正则表达式验证该字段。出于这个原因,我添加了元素的pattern属性。但是,当我使用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')); ?>
&#13;
&#13;
&#13;

结果是

&#13;
&#13;
<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">
&#13;
&#13;
&#13;

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

1 个答案:

答案 0 :(得分: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(); ?>">

不确定您需要显示什么,但它应该让您大致了解&#34;我的&#34;做法。您也可以手动转义值:

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

如果你觉得这很乏味,你总是可以写一个帮助你做这件事。你也可以使用一个选项来转换属性的转义,但默认情况下启用它是明智的。