创建 Magento 后端字段只读

问题描述 投票:0回答:3

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

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

    ));

这样就创造了场域,但他不仅仅是在阅读......

谢谢你

php magento backend field
3个回答
3
投票

一种可能的解决方案是使用 javascript 禁用页面加载时的按钮

创建一个js文件并将其上传到您的管理皮肤/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
投票

我认为您尝试使用

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;
}

1
投票

我已经开发了适用于产品、类别和 CMS 页面的此类扩展。您只需定义一些规则并选择要显示为只读的属性。

Magento Products Admin Read-Only

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

© www.soinside.com 2019 - 2024. All rights reserved.