简体   繁体   English

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

[英]Invalid block type - Custom Grid - Magento Admin Panel

I made a module and has been registered too.. Its working completely fine until I wanted to create a custom grid...I have the below code written in the necessary files, but an exception is thrown that I have invalid block type specified. 我制作了一个模块并且已经注册了..它的工作完全正常,直到我想创建一个自定义网格...我在下面的代码中写了必要的文件,但抛出了一个异常,我指定了无效的块类型。 I ahve gone through it many times but I could not figure out the mistake. 我已经经历了很多次,但我无法弄清错误。

/home/vhost/_default/magento1.9.2/app/code/local/Maven/Questionanswer/Block/Adminhtml/Questionanswer /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 /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 /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>

I have also created a blank helper...where am I going wrong? 我还创建了一个空白助手...我在哪里出错?

It seems your directory structure is not proper according to Grid block. 根据Grid块,您的目录结构似乎Grid Please follow below steps to fix your issue: 请按照以下步骤解决您的问题:

Step 1: Relocate your Grid.php file from: 第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/Questionanswer

to

/home/vhost/_default/magento1.9.2/app/code/local/Maven/Questionanswer/Block/Adminhtml/Questionanswer/ /home/vhost/_default/magento1.9.2/app/code/local/Maven/Questionanswer/Block/Adminhtml/Questionanswer/

Step 2: Change your grid class name from: 第2步:更改网格类名称:

Maven_Questionanswer_Block_Adminhtml_Questionanswer_Questionanswer_Grid Maven_Questionanswer_Block_Adminhtml_Questionanswer_Questionanswer_Grid

to

Maven_Questionanswer_Block_Adminhtml_Questionanswer_Grid Maven_Questionanswer_Block_Adminhtml_Questionanswer_Grid

Step 3: Clear your Magento cache and try to run load the grid page. 步骤3:清除Magento缓存并尝试运行加载网格页面。


Updates: 更新:

Please change: 请更换:

$this->getLayout()->createBlock('maven_questionanswer/adminhtml_questionanswer_questionanswer_grid')->toHtml()); $这 - > getLayout() - > createBlock( 'maven_questionanswer / adminhtml_questionanswer_questionanswer_grid') - > toHtml());

With

$this->getLayout()->createBlock('questionanswer/adminhtml_questionanswer_questionanswer_grid')->toHtml()); $这 - > getLayout() - > createBlock( '问题答案/ adminhtml_questionanswer_questionanswer_grid') - > toHtml());

As you declared your block as questionanswer rather than maven_questionanswer . 当你宣布你的块为questionanswer而不是maven_questionanswer

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM