Что такое теневые вкладки в иерархии объектов пользовательского интерфейса Magento? - PullRequest
11 голосов
/ 25 мая 2011

Я слоняюсь по внутренним объектам Magento, и в иерархии рендеринга виджетов / вкладок есть концепция теневых вкладок, над которой я немного размыта. Когда вы определяете вкладки для своей формы, вы можете связать ее как теневую вкладку

protected function _prepareLayout()
{
    parent::_prepareLayout();
    $this->addTab('bundle_items', array(
        'label'     => Mage::helper('bundle')->__('Bundle Items'),
        'url'   => $this->getUrl('*/*/bundles', array('_current' => true)),
        'class' => 'ajax',
    ));
    $this->bindShadowTabs('bundle_items', 'customer_options');
}

Метод bindShadowTabs - это документы с

/**
 * Mark tabs as dependent of each other
 * Arbitrary number of tabs can be specified, but at least two
 *
 * @param string $tabOneId
 * @param string $tabTwoId
 * @param string $tabNId...
 */
public function bindShadowTabs($tabOneId, $tabTwoId)

Javascript, который использует объекты PHP, выглядит как

showTabContentImmediately : function(tab) {
    this.hideAllTabsContent();
    var tabContentElement = $(this.getTabContentElementId(tab));
    if (tabContentElement) {
        Element.show(tabContentElement);
        Element.addClassName(tab, 'active');
        // load shadow tabs, if any
        if (tab.shadowTabs && tab.shadowTabs.length) {
            for (var k in tab.shadowTabs) {
                this.loadShadowTab($(tab.shadowTabs[k]));
            }
        }
        if (!Element.hasClassName(tab, 'ajax only')) {
            Element.removeClassName(tab, 'notloaded');
        }
        this.activeTab = tab;
    }
    if (varienGlobalEvents) {
        varienGlobalEvents.fireEvent('showTab', {tab:tab});
    }
},

Из базового прочтения мне не совсем понятно, каково значение того, чтобы одна вкладка зависела от другой. Является ли это простым "отображением вкладки bundle_item только в том случае, если отображается вкладка customer_options? Или что-то еще?

1 Ответ

5 голосов
/ 26 мая 2011

Похоже, это означает, что всякий раз, когда отображается какая-либо из вкладок, связанных вместе в виде теневых вкладок, другие вкладки в этом наглядном изображении также будут отображаться.

поэтому "не визуализируйте вкладку bundle_item только если отображается вкладка customer_options", а "всякий раз, когда вкладка bundle_item или вкладка customer_options отображается, визуализируйте и другую".

не уверен, что мне нравится метафора тени.

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