我想在客户端的Magento后端创建一个只读字段。 创建要知道的字段(通过模块)如下:
$installer->addAttribute("customer", "attrcode", array(
"type" => "varchar",
"backend" => "",
"label" => "label",
"input" => "text",
"source" => "",
"visible" => true,
"required" => false,
"default" => "",
"frontend" => "",
"unique" => false,
));
通过这种方式创造了这个领域,但他不仅仅是在阅读...
谢谢
答案 0 :(得分:3)
一种可能的解决方案是使用javascript来禁用页面加载上的按钮
创建一个js文件并将其上传到admin skin / js目录(disable_button.js)
添加
document.observe('dom:loaded', function(){
$("target_input_id").disabled=true;
});
然后添加或更新local.xml以包含js文件
<?xml version="1.0"?>
<layout version="0.1.0">
<adminhtml_customer_edit>
<reference name="head">
<action method="addItem"><type>skin_js</type><script>js/disable_button.js</script></action>
</reference>
</adminhtml_customer_edit>
</layout>
答案 1 :(得分:1)
我不认为使用addAttribute()
,_prepareValues($attr)
方法可以尝试的内容只允许存储在$data
中的特定值。
看看@ app / code / core / Mage / Eav / Model / Entity / Setup.php
public function addAttribute($entityTypeId, $code, array $attr)
{
$entityTypeId = $this->getEntityTypeId($entityTypeId);
$data = array_merge(
array(
'entity_type_id' => $entityTypeId,
'attribute_code' => $code
),
$this->_prepareValues($attr);
);
.....
if ($attributeId) {
$this->updateAttribute($entityTypeId, $attributeId, $data, null, $sortOrder);
} else {
$this->_insertAttribute($data);
}
.......
}
protected function _prepareValues($attr)
{
$data = array(
'backend_model' => $this->_getValue($attr, 'backend'),
'backend_type' => $this->_getValue($attr, 'type', 'varchar'),
'backend_table' => $this->_getValue($attr, 'table'),
'frontend_model' => $this->_getValue($attr, 'frontend'),
'frontend_input' => $this->_getValue($attr, 'input', 'text'),
'frontend_label' => $this->_getValue($attr, 'label'),
'frontend_class' => $this->_getValue($attr, 'frontend_class'),
'source_model' => $this->_getValue($attr, 'source'),
'is_required' => $this->_getValue($attr, 'required', 1),
'is_user_defined' => $this->_getValue($attr, 'user_defined', 0),
'default_value' => $this->_getValue($attr, 'default'),
'is_unique' => $this->_getValue($attr, 'unique', 0),
'note' => $this->_getValue($attr, 'note'),
'is_global' => $this->_getValue($attr, 'global',
Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL
),
);
return $data;
}
答案 2 :(得分:1)
我已经开发出了适用于产品,类别和CMS页面的扩展程序。您只需定义一些规则并选择要显示为只读的属性。
扩展程序网址:https://www.bubbleshop.net/magento-admin-readonly.html