3

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

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

    ));

这样它就创造了这个领域,但他不只是在阅读......

谢谢你

4

3 回答 3

3

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

创建一个 js 文件并将其上传到您的管理 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>
于 2013-05-13T23:45:27.010 回答
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;
}
于 2013-05-13T23:34:08.527 回答
1

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

Magento 产品管理员只读

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

于 2015-08-21T10:12:39.367 回答