Ben sonuçta, aynı yaklaşımı kullanarak bunu başarmak için kendimi başarısız, denedim. Bunu yapmak için en kolay yolu yapmak olacağını görünüyor:
...
$submit->setLabel('<span>My Button</span>');
...
Ancak, yayılma kaçtı edilecektir. Bu etiket dekoratör ekleyerek örneğin hatalı çıktı, işler, ancak bir lable dekoratör kaçışa kapatmak için mükemmel mümkündür:
$decorator = array(
array('ViewHelper'),
array('HtmlTag', array('tag' => 'li')),
array('Label', array('escape' => false))
);
$submit = new Zend_Form_Element_Button('submit');
$submit->setLabel('<span>My Button</span>');
$submit->setDecorators($decorator);
$submit->setAttrib('type', 'submit');
... Işler:
<label for="submit" class="optional"><span>My Button</span></label>
<li>
<button name="submit" id="submit" type="submit"><span>My Button</span></button>
</li>
... Ki, bir kenara (kolayca düzeltilebilir) anlamsal yanlış olmaktan hala öğesinin içindeki span etiketleri kaçıyor.
So what do you do?
Peki ben iyi yaklaşım (bu Zend_Form render üzerinde sıkı kontrolü söz konusu olduğunda ve bu benim meta-tavsiyem) ViewScript dekoratör kullanmak olduğunu düşünüyorum.
$submit = new Zend_Form_Element_Button('submit');
$submit->setLabel('My Button');
$submit->setDecorators(array(array('ViewScript', array('viewScript' => '_submitButton.phtml'))));
$submit->setAttrib('type', 'submit');
Sonra ... * daki submitButton.phtml aşağıdakileri tanımlayın:
<li>
<?= $this->formLabel($this->element->getName(), $this->element->getLabel()); ?>
<button
<?php
$attribs = $this->element->getAttribs();
echo
' name="' . $this->escape($this->element->getName()) . '"' .
' id="' . $this->escape($this->element->getId()) . '"' .
' type="' . $this->escape($attribs['type']) . '"';
?>
<?php
$value = $this->element->getValue();
if(!empty($value))
{
echo ' value="' . $this->escape($this->element->getValue()) . '"';
}
?>
>
<span>
<?= $this->escape($this->element->getLabel()); ?>
</span>
</button>
</li>
* submitButton.phtml dosya (en iyi $view->addScriptPath('/path/to/my/form/decorators')
kullanarak form dekoratörler için belirli bir ekleme olabilir) bir görünüm komut dizinde olması gerekir.
Bu sizin için ne arıyorsanız işlemek gerekir. Ben sadece nedeniyle işten de yaşıyorum esneklik konularında ViewScript dekoratör bakarak başladım. Sen benim komut dosyası, esnek olmayan ve kesinlikle öğesi nesnenin üzerinde doldurulan olabilir tüm üyeler verilen BNF'de olmadığını fark edeceksiniz. Yani bu bir başlangıç ve bu sorunu çözer, dedi.