如何将字符实体放入 ZF2 中的 formSubmit 值中

How to put a character entity in the value of a formSubmit in ZF2

当我像这样在 ZF2 表单中创建提交按钮时:

    $this->add(array(
            'name' => 'save_closebutton',
            'attributes' => array(
                    'type'  => 'submit',
                    'value' => 'Save & Move On »',
                    'id'    => 'save_closebutton',
                    'class' => 'btn btn-default'
            ),
    ));

然后像这样在视图中放置一个 formSubmit 元素:

    echo $this->formSubmit($form->get('save_closebutton'));

ZF2 将按钮中的文本呈现为 Save & Move On »,而不呈现代码表示的字符。

我很确定问题出在 formSubmit 助手中,因为检查元素表明助手创建了这个:

    <input id="save_closebutton" class="btn btn-default" type="submit" value="Save & Move On &#187;" name="save_closebutton">

但如果我只是在视图中回显相同的字符串,

    echo '<input id="save_closebutton" class="btn btn-default" type="submit" value="Save & Move On &#187;" name="save_closebutton">';

按钮正确呈现。

如何让 formSubmit 传递字符而不是代码?

FormSubmit 助手在输出前转义属性名称和值,据我所知,如果不提供自定义助手,就无法禁用它。

由于您的提交元素只是一个按钮,您可以使用 Button 元素和 FormButton 视图助手来解决您的问题。该元素有一个标签选项,允许您禁用标签上的 html 转义,并且助手会遵守该设置。

在表单中创建提交按钮...

$this->add(array(
        'name' => 'save_closebutton',
        'type' => 'Button', // \Zend\Form\Element\Button
        'options' => array(
             'label' => 'Save & Move On &#187;',
             // inform the FormButton helper that it shouldn't escape the label
             'label_options' => array(
                  'disable_html_escape' => true,
             ),
        ),
        'attributes' => array(
            'type'  => 'submit',  // <button type="submit" .../>
            'id'    => 'save_closebutton',
            'class' => 'btn btn-default'
        ),
));

使用 FormButton 助手渲染元素 ...

 echo $this->formButton($form->get('save_closebutton'));