इसे ठीक करने के लिए, आप वैकल्पिक रूप से इसके लिए एक इनपुट रेंडरर का उपयोग कर सकते हैं। नकारात्मक पक्ष यह है, आपको प्रत्येक इनपुट प्रकार के लिए यह करना होगा और प्रत्येक विशेषता के लिए सेटअप के माध्यम से इसे सेट करना होगा।
ऐसा करने के लिए, input_renderer कुंजी का उपयोग तब करें जब updateAttribute का उपयोग करते समय एक विशेषता या frontend_input_renderer ऐड का उपयोग करें । उदाहरण:
$installer->addAttribute(Mage_Catalog_Model_Product::ENTITY, 'yourattribute', array(
// ...
// won't be used actually as you use a custom renderer (constant equals to text), but I'm not sure what omitting this will have as effect..
'input' => Mage_Catalog_Model_Product_Option::OPTION_GROUP_TEXT,
'input_renderer' => 'yourns_yourmodule/adminhtml_product_helper_form_disabledText',
'frontend_class' => 'disabled',
'note' => 'This field is disabled',
// ...
));
फिर अपनी कक्षा के साथ Yourns_Yourmodule_Block_Adminhtml_Product_Helper_Form_DisabledTextउस इनपुट वर्ग का विस्तार करें जिसका आप वास्तव में उपयोग करेंगे। एक पाठ क्षेत्र के लिए यह होगा Varien_Data_Form_Element_Text। चयन के लिए यह होगा Varien_Data_Form_Element_Selectऔर इतने पर।
अब विशेषता को अक्षम करने के लिए अपना कोड इस तरह जोड़ें, getHtmlविधि को अधिलेखित करना, विशेषता सेट करना और इनपुट फ़ील्ड के लिए वास्तविक HTML कोड वापस करना:
public function getHtml()
{
// Set disabled
$this->setReadonly(true, true);
return parent::getHtml();
}
यह विधि lib / Varien / Data / Form / Abstract.php में पाई जा सकती है, जो सभी प्रकार के इनपुट एलिमेंट फील्ड्स को विरासत में मिलेगी, इसलिए यह alaways उपलब्ध होना चाहिए।
/**
* Disable elements
*
* @param boolean $readonly
* @param boolean $useDisabled
* @return Varien_Data_Form_Abstract
*/
public function setReadonly($readonly, $useDisabled = false)
{
if ($useDisabled) {
$this->setDisabled($readonly);
$this->setData('readonly_disabled', $readonly);
} else {
$this->setData('readonly', $readonly);
}
foreach ($this->getElements() as $element) {
$element->setReadonly($readonly, $useDisabled);
}
return $this;
}
यह संभवत: समझदार इनपुट संभावना की कल्पना करने के लिए ऊपर दिखाए गए विशेषता वर्ग में विकलांग वर्ग को शामिल करने के लिए समझदार है । आप शायद $this->addClass('disabled')विधि में भी उपयोग कर सकते हैं , मैंने अभी तक यह कोशिश नहीं की थी।