嗨我有一个带数字字段的表单。我使用正则表达式验证该字段。出于这个原因,我添加了元素的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;
结果是
<input type="text" name="number" pattern="/^(\+)?((\d)+(-|\s)?)+$/" id="number" value="" maxlength="20">
&#13;
如何在不转义正则表达式模式的情况下将数字字段添加到表单中?
答案 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())
如果你觉得这很乏味,你总是可以写一个帮助你做这件事。你也可以使用一个选项来转换属性的转义,但默认情况下启用它是明智的。