无效的块类型 - 自定义网格 - Magento管理面板

时间:2016-03-16 09:29:16

标签: php magento model-view-controller

我制作了一个模块并且已经注册了..它的工作完全正常,直到我想创建一个自定义网格...我在下面的代码中写了必要的文件,但抛出了一个例外,我有无效块指定的类型。我经历了很多次,但我无法弄清楚这个错误。

/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>

我还创建了一个空白的助手......我哪里出错了?

1 个答案:

答案 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时。