添加块但不显示
Adding block but it is not displayed
我想在销售 -> 交易 -> 视图中放置一个新块。所以我创建了一个新块并将此块添加到模板中。
web/app/design/adminhtml/default/company/layout/local.xml
<adminhtml_sales_transactions_view>
<reference name="content">
<block type="company_module/adminhtml_sales_transactions_error_grid" name="sales_transactions.error.grid" as="error_grid"/>
</reference>
</adminhtml_sales_transactions_view>
web/app/code/local/company/module/Block/Adminhtml/Sales/Transactions/Error/Grid.php
class Comapny_Module_Block_Adminhtml_Sales_Transactions_Error_Grid extends Mage_Adminhtml_Block_Sales_Transactions_Grid
{
public function __construct()
{
parent::__construct();
$this->setId('transactionErrorGrid');
$this->setPagerVisibility(false);
$this->setFilterVisibility(false);
}
....
class 看起来像 web/app/code/core/Mage/Adminhtml/Block/Sales/Transactions/Detail/Grid.php.
/web/app/design/adminhtml/default/company/template/sales/transactions/detail.phtml
<?php echo $this->getChildHtml('error_grid') ?>
为什么新区块没有显示?
编辑:
好的,我检查了 exeption.log 并发现了这个:
exception 'Mage_Core_Exception' with message 'Invalid block type: Mage_Company_Module_Block_Adminhtml_Sales_Transactions_Error_Grid' in /var/www/html/web/app/Mage.php:595
Stack trace:
#0 /var/www/html/web/app/code/core/Mage/Core/Model/Layout.php(495): Mage::throwException('Invalid block t...')
#1 /var/www/html/web/app/code/core/Mage/Core/Model/Layout.php(437): Mage_Core_Model_Layout->_getBlockInstance('company_module...', Array)
#2 /var/www/html/web/app/code/core/Mage/Core/Model/Layout.php(472): Mage_Core_Model_Layout->createBlock('company_module...', 'error_grid')
#3 /var/www/html/web/app/code/core/Mage/Core/Model/Layout.php(239): Mage_Core_Model_Layout->addBlock('company_module...', 'error_grid')
调试了一下,发现getGroupedClassName函数中的web/app/code/core/Mage/Core/Model/Config.php有问题。 magento 从配置中加载 groupType,这是 null。所以这个函数在我的 class 名字之前添加了一个 Mage_ 而这个 Mage-Class 并不存在。
有什么解决办法吗?
问题是扩展中 config.xml 文件中的组名错误。改完这个问题就解决了。
我想在销售 -> 交易 -> 视图中放置一个新块。所以我创建了一个新块并将此块添加到模板中。
web/app/design/adminhtml/default/company/layout/local.xml
<adminhtml_sales_transactions_view>
<reference name="content">
<block type="company_module/adminhtml_sales_transactions_error_grid" name="sales_transactions.error.grid" as="error_grid"/>
</reference>
</adminhtml_sales_transactions_view>
web/app/code/local/company/module/Block/Adminhtml/Sales/Transactions/Error/Grid.php
class Comapny_Module_Block_Adminhtml_Sales_Transactions_Error_Grid extends Mage_Adminhtml_Block_Sales_Transactions_Grid
{
public function __construct()
{
parent::__construct();
$this->setId('transactionErrorGrid');
$this->setPagerVisibility(false);
$this->setFilterVisibility(false);
}
....
class 看起来像 web/app/code/core/Mage/Adminhtml/Block/Sales/Transactions/Detail/Grid.php.
/web/app/design/adminhtml/default/company/template/sales/transactions/detail.phtml
<?php echo $this->getChildHtml('error_grid') ?>
为什么新区块没有显示?
编辑:
好的,我检查了 exeption.log 并发现了这个:
exception 'Mage_Core_Exception' with message 'Invalid block type: Mage_Company_Module_Block_Adminhtml_Sales_Transactions_Error_Grid' in /var/www/html/web/app/Mage.php:595
Stack trace:
#0 /var/www/html/web/app/code/core/Mage/Core/Model/Layout.php(495): Mage::throwException('Invalid block t...')
#1 /var/www/html/web/app/code/core/Mage/Core/Model/Layout.php(437): Mage_Core_Model_Layout->_getBlockInstance('company_module...', Array)
#2 /var/www/html/web/app/code/core/Mage/Core/Model/Layout.php(472): Mage_Core_Model_Layout->createBlock('company_module...', 'error_grid')
#3 /var/www/html/web/app/code/core/Mage/Core/Model/Layout.php(239): Mage_Core_Model_Layout->addBlock('company_module...', 'error_grid')
调试了一下,发现getGroupedClassName函数中的web/app/code/core/Mage/Core/Model/Config.php有问题。 magento 从配置中加载 groupType,这是 null。所以这个函数在我的 class 名字之前添加了一个 Mage_ 而这个 Mage-Class 并不存在。
有什么解决办法吗?
问题是扩展中 config.xml 文件中的组名错误。改完这个问题就解决了。