Использование объектов HTML в выборе формы зенда

Я заполняю Избранный элемент формы, и если я пытаюсь использовать Объекты HTML в значении, это добирается, преобразовал, вместо того, чтобы отобразить специальный символ.

Этот код:

$form->field_name->addMultiOption('value', ' • label');

Рендеринг:

<option value="one">&amp;nbsp;&amp;bull; label</option>

Но я хочу, чтобы это было:

<option value="one">&nbsp;&bull; label</option>

Как я использую объекты HTML здесь?


Подсказка?

Я закопал код и нашел, что он использует escape() функция из Краткого обзора Представления Зенда на маркировать AND значение. Возможно, кто-то знает, как переопределить/перегрузить эту функцию для определенного элемента формы? Я не хочу переопределять то поведение по умолчанию.

Функция от Zend_View_Helper_FormSelect класс

protected function _build($value, $label, $selected, $disable)
{
    if (is_bool($disable)) {
        $disable = array();
    }

    $opt = '<option'
         . ' value="' . $this->view->escape($value) . '"'
         . ' label="' . $this->view->escape($label) . '"';

    // selected?
    if (in_array((string) $value, $selected)) {
        $opt .= ' selected="selected"';
    }

    // disabled?
    if (in_array($value, $disable)) {
        $opt .= ' disabled="disabled"';
    }

    $opt .= '>' . $this->view->escape($label) . "</option>";

    return $opt;
}

Это - функция от Zend_View_Abstract класс:

private $_escape = 'htmlspecialchars';

/* SNIP */

public function escape($var)
{
    if (in_array($this->_escape, array('htmlspecialchars', 'htmlentities'))) {
        return call_user_func($this->_escape, $var, ENT_COMPAT, $this->_encoding);
    }

    return call_user_func($this->_escape, $var);
}
5
задан Sonny 23 February 2010 в 17:36
поделиться

2 ответа

Оказывается, это не так сложно, как я это делал.

Я изменил это:

$form->field_name->addMultiOption('value', '&nbsp;&bull; label');

На это:

$form->field_name->addMultiOption('value',
    html_entity_decode('&nbsp;&bull;', ENT_COMPAT, 'UTF-8') . ' label');
10
ответ дан 13 December 2019 в 19:26
поделиться

Вы можете попробовать отключить/очистить фильтры Zend для определенных полей при их заполнении.

$form->getElement('yourElementName')->clearFilters();
// pupulate the element 

Когда вы очистите фильтры Zend, вы сможете применить свои собственные фильтры перед заполнением.

1
ответ дан 13 December 2019 в 19:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: