创建Magento后端字段ReadOnly

时间:2013-05-13 19:10:29

标签: magento field backend

我想在客户端的Magento后端创建一个只读字段。 创建要知道的字段(通过模块)如下:

 $installer->addAttribute("customer", "attrcode",  array(
     "type"     => "varchar",
     "backend"  => "",
     "label"    => "label",
     "input"    => "text",
     "source"   => "",
     "visible"  => true,
     "required" => false,
     "default" => "",
     "frontend" => "",
     "unique"     => false,

    ));

通过这种方式创造了这个领域,但他不仅仅是在阅读...

谢谢

3 个答案:

答案 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页面的扩展程序。您只需定义一些规则并选择要显示为只读的属性。

Magento Products Admin Read-Only

扩展程序网址:https://www.bubbleshop.net/magento-admin-readonly.html