Frage

Ich bevölkern ein ausgewähltes Formularelement, und wenn ich versuche, HTML -Entitäten im Wert zu verwenden, wird es konvertiert, anstatt das spezielle Zeichen anzuzeigen.

Dieser Code:

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

Rendern:

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

Aber ich möchte, dass es lautet:

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

Wie benutze ich HTML -Entitäten hier?


Hinweis?

Ich habe den Code eingegraben und stellte fest, dass er das verwendet escape() Funktion aus der Zend View -Zusammenfassung auf der Etikett UND der Wert. Vielleicht weiß jemand, wie man diese Funktion für ein bestimmtes Formularelement überschreibt/überlastet? Ich möchte dieses Verhalten standardmäßig nicht außer Kraft setzen.

Funktion von der Zend_View_Helper_FormSelect Klasse

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;
}

Dies ist die Funktion aus der Zend_View_Abstract Klasse:

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);
}
War es hilfreich?

Lösung

Es stellt sich heraus, dass dies nicht so kompliziert ist, wie ich es geschafft habe.

Ich habe das geändert:

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

Dazu:

$form->field_name->addMultiOption('value',
    html_entity_decode('&nbsp;&bull;', ENT_COMPAT, 'UTF-8') . ' label');

Andere Tipps

Sie können versuchen, Zend -Filter für bestimmte Felder auszuschalten/zu löschen, wenn Sie sie bevölkern.

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

Wenn Sie die Zend -Filter löschen, können Sie Ihre eigene Vorberufung anwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top