Magento UI对象层次结构中的Shadow选项卡是什么?

Ala*_*orm 11 javascript php user-interface magento

我在Magento内部进行探测,并且在Widget/Tab渲染层次结构中有Shadow Tabs的这个概念,我有点模糊.在为表单定义选项卡时,可以将其绑定为阴影选项卡

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');
}
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

利用PHP对象的Javascript看起来像

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});
    }
},
Run Code Online (Sandbox Code Playgroud)

从一个基本的阅读,我不完全清楚使一个标签"依赖"另一个标签的含义是什么.这是一个简单的"只渲染bundle_item选项卡,如果customer_options选项卡被渲染?还是更多?

epe*_*leg 5

似乎这意味着每当显示绑定在一起作为shadowTabs的任何选项卡时,此grop中的其他选项卡也将被渲染.

所以不要"只渲染bundle_item标签,如果customer_options标签被渲染",而是"每当bundle_item标签或customer_options标签被渲染时,也渲染另一个标签".

不知道我喜欢暗影的隐喻.