Bunu düzeltmek için, alternatif olarak bunun için bir giriş oluşturucu kullanabilirsiniz. Dezavantajı, bunu her giriş türü için yapmanız ve bunu her özellik için kurulum yoluyla ayarlamanız gerekir.
Bunu yapmak için, kullanmak input_renderer kullanırken anahtarı addAttribute bir özelliği veya frontend_input_renderer kullanırken updateAttribute . Misal:
$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',
// ...
));
Daha sonra sınıfınızla Yourns_Yourmodule_Block_Adminhtml_Product_Helper_Form_DisabledText
gerçekten kullanacağınız giriş sınıfını genişletin. Bir metin alanı için olurdu Varien_Data_Form_Element_Text
. Seçimler için böyle olur Varien_Data_Form_Element_Select
ve böyle devam eder.
Şimdi özniteliği devre dışı bırakmak, getHtml
yöntemin üzerine yazmak , özniteliği ayarlamak ve giriş alanı için gerçek HTML kodunu döndürmek için böyle bir kod ekleyin :
public function getHtml()
{
// Set disabled
$this->setReadonly(true, true);
return parent::getHtml();
}
Yöntem, tüm form girdi öğesi alanları tarafından miras alınacak olan lib / Varien / Data / Form / Abstract.php dosyasında bulunabilir, bu nedenle her zaman kullanılabilir olmalıdır.
/**
* 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;
}
Devre dışı bırakılan sınıfı, reddedilen giriş olasılığını görselleştirmek için yukarıda gösterildiği gibi öznitelik kurulumuna dahil etmek mantıklıdır . Muhtemelen $this->addClass('disabled')
yöntemde de kullanabilirsiniz , henüz denemedim.