ในการแก้ไขปัญหานี้คุณสามารถใช้ตัวแสดงผลอินพุตสำหรับสิ่งนี้ได้ ข้อเสียคือคุณจะต้องทำสิ่งนี้สำหรับอินพุตแต่ละประเภทและตั้งค่านี้ผ่านการตั้งค่าสำหรับแต่ละแอตทริบิวต์
ต้องการทำเช่นนั้นใช้input_rendererที่สำคัญเมื่อใช้addAttributeแอตทริบิวต์หรือfrontend_input_rendererเมื่อใช้updateAttribute ตัวอย่าง:
$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ซึ่งจะได้รับการสืบทอดจากทุกช่องใส่องค์ประกอบองค์ประกอบดังนั้นมันควรจะใช้ได้
/**
* 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')
วิธีนี้ได้ฉันยังไม่ได้ลอง