我制作了一个模块并且已经注册了..它的工作完全正常,直到我想创建一个自定义网格...我在下面的代码中写了必要的文件,但抛出了一个例外,我有无效块指定的类型。我经历了很多次,但我无法弄清楚这个错误。
/home/vhost/_default/magento1.9.2/app/code/local/Maven/Questionanswer/Block/Adminhtml/Questionanswer
<?php
class Maven_Questionanswer_Block_Adminhtml_Questionanswer_Question extends Mage_Adminhtml_Block_Widget_Grid_Container
{
public function __construct()
{
$this->_blockGroup = 'questionanswer';
$this->_controller = 'adminhtml_question';
$this->_headerText = Mage::helper('questionanswer')->__('questionanswer');
$this->_addButtonLabel = 'Add Question';
parent::__construct();
}
}
?>
/home/vhost/_default/magento1.9.2/app/code/local/Maven/Questionanswer/Block/Adminhtml/Questionanswer/Questionanswer
<?php
class Maven_Questionanswer_Block_Adminhtml_Questionanswer_Questionanswer_Grid extends Mage_Adminhtml_Block_Widget_Grid
{
public function __construct()
{
parent::__construct();
$this->setId('questionGrid');
$this->setDefaultSort('question_id');
$this->setDefaultDir('DESC');
$this->setSaveParametersInSession(true);
}
protected function _prepareCollection()
{
$collection = Mage::getModel('questionanswer/question')->getCollection();
$this->setCollection($collection);
parent::_prepareCollection();
return $this;
}
protected function _prepareColumns()
{
$helper = Mage::helper('questionanswer');
$this->addColumn('question_id',
array(
'header' => 'ID',
'align' =>'right',
'width' => '50px',
'index' => 'id_pfay_test',
));
$this->addColumn('username',
array(
'header' => 'Username',
'align' =>'left',
'index' => 'username',
));
$this->addColumn('email', array(
'header' => 'email',
'align' =>'left',
'index' => 'email',
));
$this->addColumn('question', array(
'header' => 'question',
'align' =>'left',
'index' => 'question',
));
$this->addColumn('status', array(
'header' => 'status',
'align' =>'left',
'index' => 'status',
));
return parent::_prepareColumns();
}
public function getGridUrl()
{
return $this->getUrl('*/*/grid', array('_current'=>true));
}
}
**/home/vhost/_default/magento1.9.2/app/code/local/Maven/Questionanswer/controllers/Adminhtml**
<?php
class Maven_Questionanswer_Adminhtml_QuestionController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$this->_title($this->__('Question'))->_title($this->__('Question Answer'));
$this->loadLayout();
$this->_setActiveMenu('questionanswer/question');
$this->_addContent($this->getLayout()->createBlock('maven_questionanswer/adminhtml_questionanswer_question'));
$this->renderLayout();
}
public function gridAction()
{
$this->loadLayout();
$this->getResponse()->setBody(
$this->getLayout()->createBlock('maven_questionanswer/adminhtml_questionanswer_questionanswer_grid')->toHtml());
}
// public function exportInchooCsvAction()
// {
// $fileName = 'orders_inchoo.csv';
// $grid = $this->getLayout()->createBlock('inchoo_orders/adminhtml_sales_order_grid');
// $this->_prepareDownloadResponse($fileName, $grid->getCsvFile());
// }
// public function exportInchooExcelAction()
// {
// $fileName = 'orders_inchoo.xml';
// $grid = $this->getLayout()->createBlock('inchoo_orders/adminhtml_sales_order_grid');
// $this->_prepareDownloadResponse($fileName, $grid->getExcelFile($fileName));
// }
}
?>
/home/vhost/_default/magento1.9.2/app/code/local/Maven/Questionanswer/etc/config.xml
<blocks>
<questionanswer>
<class>Maven_Questionanswer_Block</class>
</questionanswer>
</blocks>
<admin>
<routers>
<adminhtml>
<use>admin</use>
<args>
<modules>
<maven_questionanswer>Maven_Questionanswer_Adminhtml</maven_questionanswer>
</modules>
</args>
</adminhtml>
</routers>
</admin>
and in adminhtml.xml
<?xml version="1.0" encoding="UTF-8"?>
<adminhtml>
<menu>
<questionanswer translate="title" module="questionanswer">
<title>Question Answer</title>
<sort_order>60</sort_order>
<children>
<questionanswer_question module="questionanswer">
<title>Question</title>
<action>adminhtml/question</action>
</questionanswer_question>
</children>
</questionanswer>
</menu>
<acl>
<resources>
<all>
<title>Allow Everything</title>
</all>
<admin>
<children>
<system>
<children>
<config>
<children>
<questionanswer_section>
<title>Question-Answer</title>
</questionanswer_section>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</adminhtml>
我还创建了一个空白的助手......我哪里出错了?
答案 0 :(得分:0)
根据Grid
块,您的目录结构似乎不合适。
请按照以下步骤解决您的问题:
第1步:重新定位Grid.php
文件:
/home/vhost/_default/magento1.9.2/app/code/local/Maven/Questionanswer/Block/Adminhtml/Questionanswer/Questionanswer
到
/home/vhost/_default/magento1.9.2/app/code/local/Maven/Questionanswer/Block/Adminhtml/Questionanswer /
步骤2:从以下位置更改网格类名称:
Maven_Questionanswer_Block_Adminhtml_Questionanswer_Questionanswer_Grid
到
Maven_Questionanswer_Block_Adminhtml_Questionanswer_Grid
步骤3:清除Magento缓存并尝试运行加载网格页面。
<强>更新强>
请更改:
$这 - &GT; getLayout() - &GT; createBlock(&#39; maven_questionanswer / adminhtml_questionanswer_questionanswer_grid&#39;) - &GT; toHtml());
使用
$这 - &GT; getLayout() - &GT; createBlock(&#39;问题答案/ adminhtml_questionanswer_questionanswer_grid&#39;) - &GT; toHtml());
当您将阻止声明为questionanswer
而不是maven_questionanswer
时。