【问题标题】:Prevent ZF2 formHelper escaping attributes防止 ZF2 formHelper 转义属性
【发布时间】:2015-03-07 18:48:52
【问题描述】:

您好,我有一个带有数字字段的表单。我使用正则表达式来验证该字段。出于这个原因,我在元素中添加了模式属性。但是,当我使用 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="/^(\+)?((\d)+(-|\s)?)+$/" id="number" value="" maxlength="20">

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

【问题讨论】:

  • github上有一个关于这个的讨论。 github.com/zendframework/zf2/issues/3015 也许这有助于解释为什么会发生这种情况以及如何解决它。
  • 我阅读了这个讨论,但它只涉及标签而不是属性。

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


【解决方案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())

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

【讨论】:

  • 感谢您的回复。我已经按照您的建议做了,因为它似乎不是使用默认帮助程序转义的一种方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-21
  • 1970-01-01
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多