2016-01-05 2 views
-1

Я работаю над настраиваемым модулем брандмауэра magento, который будет иметь сетку с элементами, которые можно добавить/отредактировать. Это мой модуль структуры:Пользовательский модуль Magento Admin с сеткой с использованием блока - «Mage_Core_Exception» с сообщением «Недопустимый тип блока»

/Mycompany/ 
---/Mymodule/ 
-------/Block/ 
-----------/Adminhtml 
--------------/Manageskumappings.php 
--------------/Manageskumappings/ 
-----------------/Grid.php 
-----------------/Edit.php 
-----------------/Edit/ 
--------------------/Form.php 
-------/controllers/ 
-----------/Adminhtml 
--------------/ManageskumappingsController.php 
-------/etc/ 
-------/Helper/ 
-------/Model/ 
-------/sql/ 

Это мой модуля config.xml:

<?xml version="1.0"?> 
<config> 

    <!-- Module Info --> 
    <modules> 
     <Mycompany_Mymodule> 
      <version>2.0.0</version> 
     </Mycompany_Mymodule> 
    </modules> 

    <!-- Module Globals --> 
    <global> 

     <!-- Register Helper --> 
     <helpers> 
      <mycompany_mymodule> 
       <class>Mycompany_Mymodule_Helper</class> 
      </mycompany_mymodule> 
     </helpers> 

     <!-- Register Models --> 
     <models> 
      <mycompany_mymodule> 
       <class>Mycompany_Mymodule_Model</class> 
       <resourceModel>mycompany_mymodule_mysql4</resourceModel> 
      </mycompany_mymodule> 
      <mycompany_mymodule_mysql4> 
       <class>Mycompany_Mymodule_Model_Mysql4</class> 
       <entities> 
        <skumappings> 
         <table>icw_ic_skumappings</table> 
        </skumappings> 
       </entities> 
      </mycompany_mymodule_mysql4> 
     </models> 

     <!-- Register Resource --> 
     <resources> 
      <mycompany_mymodule_setup> 
       <setup> 
        <module>Mycompany_Mymodule</module> 
       </setup> 
      </mycompany_mymodule_setup> 
     </resources> 

    </global> 

    <!-- Admin Router --> 
    <admin> 
     <routers> 
      <adminhtml> 
       <args> 
        <modules> 
         <Mycompany_Mymodule after="Mage_Adminhtml">Mycompany_Mymodule_Adminhtml</Mycompany_Mymodule> 
        </modules> 
       </args> 
      </adminhtml> 
     </routers> 
    </admin> 

    <!-- Admin Layout --> 
    <adminhtml> 
     <layout> 
      <updates> 
       <mycompany_mymodule> 
        <file>mycompany/mymodule.xml</file> 
       </mycompany_mymodule> 
      </updates> 
     </layout> 
    </adminhtml> 

</config> 

и это мой adminhtml.xml для модуля:

<?xml version="1.0"?> 
<config> 

    <!-- Menu Setup --> 
    <menu> 
     <mycompany translate="title" module="mycompany_mymodule"> 
      <title>Infinite:Connect v2</title> 
      <sort_order>0</sort_order> 
      <children> 
       <mycompany_mymodule_manageskumappings> 
        <title>Manage SKU Mappings</title> 
        <sort_order>1</sort_order> 
        <action>adminhtml/manageskumappings</action> 
       </mycompany_mymodule_manageskumappings> 
      </children> 
     </mycompany> 
    </menu> 

    <!-- Access Control List --> 
    <acl> 
     <resources> 
      <admin> 
       <children>     
        <mycompany translate="title" module="mycompany_mymodule"> 
         <title>My Module</title> 
         <sort_order>1</sort_order> 
         <children> 
          <manageskumappings> 
           <title>Manage SKU Mappings</title> 
           <sort_order>1</sort_order> 
          </manageskumappings> 
         </children> 
        </mycompany> 
       </children> 
      </admin> 
     </resources> 
    </acl> 

</config> 

Я создал следующий файл макета:

app/design/adminht мл/по умолчанию/по умолчанию/макет/MyCompany/mymodule.xml

следующее определение:

<?xml version="1.0"?> 
<layout> 

    <!-- Manage SKU Mappings --> 
    <adminhtml_manageskumappings_index> 
     <reference name="content"> 
      <block type="mycompany_mymodule/adminhtml_manageskumappings" name="mycompany_mymodule_manageskumappings" /> 
     </reference> 
    </adminhtml_manageskumappings_index> 

</layout> 

Это мой контроллер сетки:

приложение/код/​​сообщества/моякомп/MyModule /controllers/Adminhtml/ManageskumappingsController.php

следующим кодом:

<?php 

class Mycompany_Mymodule_Adminhtml_ManageskumappingsController extends Mage_Adminhtml_Controller_Action 
{ 
    protected function _isAllowed() 
    { 
     return Mage::getSingleton('admin/session') 
      ->isAllowed('mycompany/manageskumappings'); 
    } 

    protected function _initAction() 
    { 
     $this->loadLayout() 
      ->_setActiveMenu('mycompany/mycompany_mymodule_manageskumappings') 
      ->_title('Manage SKU Mappings'); 

     return $this; 
    } 

    public function indexAction() 
    { 
     $this->_initAction() 
      ->renderLayout(); 
    } 

    // ... Snipped ... 

Я загрузил код и миг db, и появилось меню. Когда я перехожу в меню «Mymodule -> Manage SKU Mappings», я вижу пустую страницу.

Я пошел посмотреть на вар/Журнал/exception.log и я вижу следующее:

исключение 'Mage_Core_Exception' с сообщением 'Неверный тип блока: Mage_Mycompany_Mymodule_Block_Adminhtml_Manageskumappings' в/вар/WWW/public_html/приложение /Mage.php:595

Любая идея, что может быть неправильным?

ответ

2

Первая ошибка, которую я вижу: вы забыли зарегистрировать свои блоки. Пожалуйста, добавьте часть определения блока в свои модули config.xml:

<config> 
... 
    <global> 
    ... 
     <!-- Register Blocks --> 
     <blocks> 
      <mycompany_mymodule> 
       <class>Mycompany_Mymodule_Block</class> 
      </mycompany_mymodule> 
     </blocks> 
    ... 
    </global> 
... 
<config> 
+0

Глупый я. Я думал, что сделал. Благодарю. – Latheesan

Смежные вопросы