Вы получите намного больше, если прекратите поиск в Google и начнете искать свой код.
Поиск строки исключения «Неправильная конфигурация вкладки»
$ ack 'Wrong tab configuration'
Adminhtml/Block/Widget/Tabs.php
108: throw new Exception(Mage::helper('adminhtml')->__('Wrong tab configuration.'));
112: throw new Exception(Mage::helper('adminhtml')->__('Wrong tab configuration.'));
Посмотрите на это, во всем дереве исходных текстов есть только два возможных мест, которые могут выбрасывать этоИсключение составляют оба метода addTab
, который вызывал указанная вами трассировка стека.Глядя на этот код в контексте
public function addTab($tabId, $tab)
{
if (is_array($tab)) {
$this->_tabs[$tabId] = new Varien_Object($tab);
}
elseif ($tab instanceof Varien_Object) {
$this->_tabs[$tabId] = $tab;
if (!$this->_tabs[$tabId]->hasTabId()) {
$this->_tabs[$tabId]->setTabId($tabId);
}
}
elseif (is_string($tab)) {
if (strpos($tab, '/')) {
$this->_tabs[$tabId] = $this->getLayout()->createBlock($tab);
}
elseif ($this->getChild($tab)) {
$this->_tabs[$tabId] = $this->getChild($tab);
}
else {
$this->_tabs[$tabId] = null;
}
if (!($this->_tabs[$tabId] instanceof Mage_Adminhtml_Block_Widget_Tab_Interface)) {
throw new Exception(Mage::helper('adminhtml')->__('Wrong tab configuration.'));
}
}
else {
throw new Exception(Mage::helper('adminhtml')->__('Wrong tab configuration.'));
}
Похоже, ваш вызов проходит через вторую ветку if / else.Ваша строка вкладки, tab_pricematrix
, используется для извлечения дочернего блока из текущей вкладки
$this->_tabs[$tabId] = $this->getChild($tab);
Однако, похоже, что все, что там находится, не является дочерним элементомMage_Adminhtml_Block_Widget_Tab_Interface
.
Я думаю, это потому, что вызов getChild
возвращает false, потому что ваш модуль не добавил вкладку с именем tab_pricematrix
в макет (скопировали ли вы XML-файлы Layout на новый сервер?) Не зная, как вы реализовали этот модуль, невозможно сказать наверняка.
Удачи!