FormButton
вид помощник будет автоматически избежать содержимого кнопки HTML, как правильно @ Сэм упоминается.
Единственный способ избежать этого - использовать пользовательский помощник вида кнопки. Вместо того, чтобы удалять функциональные возможности эвакуации (поскольку текстовое содержимое кнопки должно быть все еще экранировано); вы можете расширить помощник вида и добавить дополнительный параметр, позволяющий отображать html (я предполагаю, что это значок начальной загрузки).
Например
use Zend\Form\View\Helper\FormButton as ZendFormButton;
class FormButton extends ZendFormButton
{
public function render(ElementInterface $element, $buttonContent = null)
{
$content = (isset($buttonContent)) ? $buttonContent : $element->getLabel();
$icon = isset($element->getOption('icon')) ? $element->getOption('icon') : '';
$escape = $this->getEscapeHtmlHelper();
return $this->openTag($element) . $icon . $escape($content) . $this->closeTag();
}
}
Затем создайте «» invokable запись конфигурации с использованием зарегистрированного имени View Helper в кнопку по умолчанию («form_button») в менеджере сервисов. Это будет , тогда означает, что наш помощник будет использоваться вместо стандартного Zend\Form\View\Helper\FormButton
.
// Module.php
public function getViewHelperConfig()
{
return array(
'invokables' => array(
'form_button' => 'MyModule\Form\View\Helper\FormButton',
)
);
}
Наконец, изменить спецификацию кнопки элемента, чтобы добавить новую опцию «ICON»
$this->add(array(
'type' => 'Button',
'name' => 'submit',
'options' => array(
'label' => 'Modifica',
'icon' => '<i class="icon icon-foo">',
),
'attributes' => array(
'type' => 'submit',
'class' => 'btn btn-warning'
)
));
Некоторые другие точки
- Если вы используете перевод для кнопки затем выше код удалит эту функциональность; это можно легко добавить снова (просто посмотрите в помощнике просмотра кнопки). Я удалил его, чтобы сделать пример clearer
- Вы также можете расширить его, чтобы добавить к нему любое количество других параметров (возможно, положение значка до или после текста кнопки). Помощнику вида просто нужно будет прочитать эту опцию и вывести правильный HTML.
у должен вынести кнопку с содержимым HTML вручную. Если я не ошибаюсь, это невозможно, если у Zend \ Form есть html-контент, так как он будет скрыт изнутри по соображениям безопасности. – Sam