/ / zend_form सजावट पूरे रूप में प्रत्येक व्यक्तिगत तत्व नहीं - ज़ेंड-फ्रेमवर्क, ज़ेंड-फॉर्म

zend_form सजावट पूरे रूप में प्रत्येक व्यक्तिगत तत्व नहीं - ज़ेंड-फ्रेमवर्क, ज़ेंड-फॉर्म

ज़ेंड फॉर्म चेकबॉक्स सेट लेबल संपत्ति पर कस्टम HTML आउटपुट
इस सवाल के जवाब में।
मैं इसे अपने सभी form_elements पर प्रत्येक व्यक्ति 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");
...
}

}

आप कई अन्य चीजों के लिए उस विधि का उपयोग कर सकते हैं। अतीत में मैंने इसे अपने सभी फॉर्म तत्वों पर डिफ़ॉल्ट सजावट को परिभाषित करने के लिए उपयोग किया है।


उत्तर № 2 के लिए 1

आप कॅाल कर सकते हैं setElementDecorators() बाद addElements() फॉर्म में सभी तत्वों के लिए सजावटी सेट करने के लिए। संबंधित में अधिक जानकारी देखें ज़ेंड फ्रेमवर्क दस्तावेज.

उम्मीद है की वो मदद करदे,