我一直致力于在我的Magento模块的adminhtml中获取新表单。然而,我遇到了实际加载块的严重问题。我可以使用我在不同的堆栈溢出问题中找到的代码加载一个测试块(使用phtml布局)(我在adminhtml控制器中实现它):
$block = $this->getLayout()->createBlock('coupsmart_coupon/adminhtml_forms');
error_log('The block:' . var_export($block, true));
if($block)
{
$block->setTemplate('test/test.phtml');
error_log(var_export($block->getTemplate(), true));
error_log('The HTML:');
error_log(var_export($block->toHtml(),true));
}
使用测试块,我找回正确的html(在我的adminhtml / default / default / template文件夹中找到)。
但是,当我实例化grid_container块时,它不会运行if($block){}
部分,因为该块是false。但是在我的grid_container的块类中,我有一个__constructor()
方法,我记录一个输出,所以它运行构造函数,这意味着我的类实例化(和命名)是正确的。
对于Mage_Adminhtml_Block_Widget_Grid_Container
类,什么可能导致构造函数在块上运行但仍然返回false?
如果需要更多代码(控制器,grid_container块,网格块,配置等),请告诉我,我会发布它。我只是不想用可能会淡化问题的代码溢出来压倒。
编辑:网格容器
class Coupsmart_Coupon_Block_Adminhtml_Forms extends
Mage_Adminhtml_Block_Widget_Grid_Container
{
public function __construct()
{
error_log('adminhtml forms (parent) construct');
$this->_controller = 'adminhtml_forms';
$this->_blockGroup = 'coupsmart_coupon';
$this->_headerText = Mage::helper('forms')->__('Coupon Manager');
$this->_addButtonLabel = Mage::helper('forms')->__('Edit Coupon');
parent::__construct();
}
}
当我实例化块时,上面容器中的错误日志会显示出来。
答案 0 :(得分:2)
如果在实例化时抛出异常,则返回的块可能为false。在您的代码中,这可能肯定来自这一部分:Mage::helper('forms')
在模块的config.xml文件中,您是否定义了这样的帮助程序? :
<global>
<helpers>
<forms><class>Coupsmart_Coupon_Helper</class></forms>
</helpers>
</global>
否则,请使用您在forms
调用中使用的其他代码替换Mage::helper('forms')
(从看起来看,这可能看起来像这样:Mage::helper('coupsmart_coupon')
)