我开发的magento扩展有一个很大的问题。 Localhost一切都很好,但是当我部署时,它会收到此错误。
错误的标签配置
#0 [internal function]: Mage_Adminhtml_Block_Widget_Tabs->addTab('pricematrix', 'tab_pricematrix')
#1 /var/www/vhosts/discountprint.dk/httpdocs/app/code/core/Mage/Core/Model/Layout.php(347): call_user_func_array(Array, Array)
#2 /var/www/vhosts/something.dk/httpdocs/app/code/core/Mage/Core/Model/Layout.php(213): Mage_Core_Model_Layout->_generateAction(Object(Mage_Core_Model_Layout_Element), Object(Mage_Core_Model_Layout_Element))
#3 /var/www/vhosts/something.dk/httpdocs/app/code/core/Mage/Core/Model/Layout.php(209): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element))
#4 /var/www/vhosts/something.dk/httpdocs/app/code/core/Mage/Core/Controller/Varien/Action.php(343): Mage_Core_Model_Layout->generateBlocks()
#5 /var/www/vhosts/something.dk/httpdocs/app/code/core/Mage/Core/Controller/Varien/Action.php(270): Mage_Core_Controller_Varien_Action->generateLayoutBlocks()
#6 /var/www/vhosts/something.dk/httpdocs/app/code/core/Mage/Adminhtml/Controller/Action.php(263): Mage_Core_Controller_Varien_Action->loadLayout(Array, true, true)
#7 /var/www/vhosts/something.dk/httpdocs/app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php(246): Mage_Adminhtml_Controller_Action->loadLayout(Array)
#8 /var/www/vhosts/something.dk/httpdocs/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Adminhtml_Catalog_ProductController->editAction()
#9 /var/www/vhosts/something.dk/httpdocs/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(253): Mage_Core_Controller_Varien_Action->dispatch('edit')
#10 /var/www/vhosts/something.dk/httpdocs/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#11 /var/www/vhosts/something.dk/httpdocs/app/code/core/Mage/Core/Model/App.php(340): Mage_Core_Controller_Varien_Front->dispatch()
#12 /var/www/vhosts/something.dk/httpdocs/app/Mage.php(627): Mage_Core_Model_App->run(Array)
#13 /var/www/vhosts/something.dk/httpdocs/index.php(80): Mage::run('', 'store')
#14 {main}
我用Google搜索了几个小时但找不到任何有用的信息。我的magento版本是1.5.0.1
希望你能帮忙
答案 0 :(得分:11)
如果您停止搜索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文件复制到新的服务器?)在不知道你是如何实现该模块的情况下,我们无法确定。
答案 1 :(得分:2)
通常,在实际站点上没有出现的localhost问题与文件系统区分大小写有关。根据我的经验,大多数开发人员都在Windows / Mac OSX上开发,默认情况下不区分大小写。但是大多数生产环境都是某种* nix系统。过去让我绊倒的一件事就是在中间设置一个大写字母的文件名。
例如,如果一个块是FooBar.php并且位于Mage_Core中,那么在加载模型时你必须使用...
Mage::getModel('core/fooBar');
该字符串会自动通过ucwords运行,但显然在请求模型/块等时,需要考虑文件命名中的任何骆驼外壳。