Untuk memperbaikinya, Anda dapat menggunakan input renderer sebagai alternatif. Kelemahannya adalah, Anda harus melakukan ini untuk setiap jenis input dan mengatur ini melalui pengaturan untuk setiap atribut.
Untuk melakukannya, gunakan kunci input_renderer saat menggunakan addAttribute atribut atau frontend_input_renderer saat menggunakan updateAttribute . Contoh:
$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',
// ...
));
Kemudian dengan kelas Anda Yourns_Yourmodule_Block_Adminhtml_Product_Helper_Form_DisabledText
, tambah kelas input yang akan Anda gunakan. Untuk bidang teks akan menjadi Varien_Data_Form_Element_Text
. Untuk memilih itu akan Varien_Data_Form_Element_Select
dan seterusnya.
Sekarang tambahkan kode Anda seperti ini untuk menonaktifkan atribut, menimpa getHtml
metode, mengatur atribut dan mengembalikan kode HTML yang sebenarnya untuk bidang input:
public function getHtml()
{
// Set disabled
$this->setReadonly(true, true);
return parent::getHtml();
}
Metode ini dapat ditemukan di lib / Varien / Data / Form / Abstract.php yang akan diwarisi oleh semua kolom isian form input, sehingga harus selalu tersedia.
/**
* 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;
}
Mungkin masuk akal untuk memasukkan kelas yang dinonaktifkan di pengaturan atribut seperti yang ditunjukkan di atas untuk memvisualisasikan kemungkinan input yang ditolak. Anda mungkin juga dapat menggunakan $this->addClass('disabled')
metode ini, saya belum mencoba ini.