Користувальницький HTML-вихід на прапорець Zend Form встановити властивість setLabel
На додаток до цього питання.
Я хочу застосувати це до всіх моїх форм-елементів, не додаючи їх до кожного окремого елемента form_element
class my_form extends Zend_Form
{
public function init()
{
$this->setAction("")
->setMethod("post");
//shouldn"t I be able to set the decorator here?
$firstname= new Zend_Form_Element_Text("firstname");
$firstname->setLabel("firstname")
->setRequired(true)
->getDecorator("label")
->setOptions(array("requiredSuffix"=> " <span class="required">*</span> ", "escape"=> false))
//here it works but I don"t want it on every element.
;
$lastname= new Zend_Form_Element_Text("lastname");
$lastname->setLabel("firstname")
->setRequired(true)
->getDecorator("label")
->setOptions(array("requiredSuffix"=> " <span class="required">*</span> ", "escape"=> false))
//here it works but I don"t want it on every element.
;
$this->addElements(array($lastname, $firstname));
}
Відповіді:
3 для відповіді № 1Ви можете зробити себе класом, який розширює Zend_Form
і перевантажте createElement
спосіб:
class My_Base_Form extends Zend_Form
{
public function createElement($type, $name, $options = null)
{
$element = parent::createElement($type, $name, $options);
$element->setOptions(
array("requiredSuffix"=> " <span class="required">*</span> ")
);
$label = $element->getDecorator("Label");
if (!empty($label)) {
$label->setOption("escape", false);
}
return $element;
}
}
і тоді ви поширюєте цю форму:
class My_Form extends My_Base_Form
{
public function init()
{
...
// $firstname= new Zend_Form_Element_Text("firstname"); old version
// taking advantage of the createElement
$firstname = $this->createElement("text", "firstname");
...
}
}
Ви можете використовувати цей метод для багатьох інших речей. Раніше я використовував його для визначення декораторів за замовчуванням на всіх моїх елементах форми.
1 для відповіді № 2
Ви можете зателефонувати setElementDecorators()
після addElements()
встановити декоратори для всіх елементів у формі. Див. Додаткову інформацію в пов'язаній Zend Framework документація.
Надія, що допомагає