Создать пользовательский атрибут вкладки в редакторе клиента - PullRequest
0 голосов
/ 23 августа 2011

Я пытаюсь создать вкладку с именем Additonal в редакторе клиента администратора и поместить в нее свой пользовательский атрибут сотрудника.Это возможно через мои модули установки sql?Этот вопрос относится только к Magento> = 1.5.1.

$installer = $this;

$installer->startSetup();

$installer->addAttribute('customer', 'employee', array(
    'type'              => 'int',
    'backend'           => '',
    'frontend'          => '',
    'label'             => 'Employee Status',
    'input'             => 'select',
    'class'             => '',
    'source'            => 'boilerplate/customer_attribute_status',
    'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
    'visible'           => true,
    'required'          => false,
    'user_defined'      => false,
    'default'           => '',
    'searchable'        => false,
    'filterable'        => false,
    'comparable'        => false,
    'visible_on_front'  => false,
    'unique'            => false
));

$attribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'employee');
$attribute->addData(array('sort_order'=>50));
$attribute->setData('used_in_forms', array('adminhtml_customer'));
$attribute->save();

Ниже не работает.Здесь я пытаюсь создать вкладку в редактировании клиента администратора бэкэнда и поместить в нее свой атрибут emploee.

$entityTypeId = $installer->getEntityTypeId('customer');
$attributeId  = $installer->getAttributeId('customer', 'employee');

$attributeSets = $installer->_conn->fetchAll('select * from '.$this->getTable('eav/attribute_set').' where entity_type_id=?', $entityTypeId);
foreach ($attributeSets as $attributeSet) {
    $setId = $attributeSet['attribute_set_id'];
    $installer->addAttributeGroup($entityTypeId, $setId, 'Additional');
    $groupId = $installer->getAttributeGroupId($entityTypeId, $setId, 'Additional');
    $installer->addAttributeToGroup($entityTypeId, $setId, $groupId, $attributeId);
}

$installer->endSetup();

Ответы [ 2 ]

2 голосов
/ 24 августа 2011

Вот код для добавления вкладки в представлении редактирования клиента администратора:

  1. В XML-файле макета администратора вашего модуля поместите:

    <adminhtml_customer_edit>
        <reference name="customer_edit_tabs">
            <action method="addTab"><name>tabs_name</name><block>ModuleAlias/path_to_block_file</block></action>
        </reference>
    </adminhtml_customer_edit>
    
  2. ваш файл блока должен расширяться Mage_Adminhtml_Block_Template и реализовывать Mage_Adminhtml_Block_Widget_Tab_Interface (это означает, что вам придется реализовать некоторые методы), а в конструкции вы можете установить файл шаблона, например:

    class Namespace_Module_Block_Adminhtml_Customer_Edit_Tab_History
     extends Mage_Adminhtml_Block_Template
     implements Mage_Adminhtml_Block_Widget_Tab_Interface
    {
        public function __construct()
        {
            parent::__construct();
            $this->setTemplate('path/to/file.phtml');
        }
    
        //down here are the mandatory methods you have to include
        public function getTabLabel()
        {
            return Mage::helper('points')->__('Tab label');
        }
    
        public function getTabTitle()
        {
            return Mage::helper('points')->__('Tab title');
        }
    
        public function canShowTab()
        {
            if (Mage::registry('current_customer')->getId()) {
                return true;
            }
            return false;
        }
    
        public function isHidden()
        {
            if (Mage::registry('current_customer')->getId()) {
                return false;
            }
            return true;
        }
    }
    
0 голосов
/ 10 июня 2013

Вы также можете добавить вкладку AJAX вместо загрузки всех данных со страницы

, например

<layout>
    <adminhtml_catalog_product_edit>
        <reference name="product_tabs">
            <action method="addTab">
                <id>mediagallery</id>
                <tab>
                    <label>MediaGallery</label>
                    <class>ajax</class>

                </tab>
            </action>
            <action method="setTabData">
                <id>mediagallery</id>
                <key>url</key>
                <value>*/catalog_product_mediagallery/index</value>
            </action>
        </reference>
    </adminhtml_catalog_product_edit>
    <adminhtml_catalog_product_mediagallery_index>
        <block type="mediagallery/adminhtml_catalog_product_edit_tab_gallery" name="root" output="toHtml" template="mediagallery/container.phtml">
        </block>
    </adminhtml_catalog_product_mediagallery_index>
    <adminhtml_catalog_product_mediagallery_image>
        <block type="mediagallery/adminhtml_catalog_product_edit_tab_gallery_image" name="root"></block>
    </adminhtml_catalog_product_mediagallery_image>
</layout>
  1. добавить ссылку на вкладку в обработчике
  2. установить данные вкладкичтобы установить правильный URL-адрес из содержимого загрузки
  3. в контроллере, вы можете отобразить содержимое или макет вызова, как в моем примере

adminhtml_catalog_product_mediagallery_index - отображать содержимое: сетка содержится инекоторые пользовательские кнопки /

adminhtml_catalog_product_mediagallery_image - URL-адрес сетки для сетки, которая отображалась в предыдущем дескрипторе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...