2012-06-11 6 views
1

Очень запутано с модулем adminhtml, который я пытаюсь написать!Проблемы с сеткой администратора Magento

Эффективно У меня есть IndexController написано и работает, и я пытаюсь вызвать блок сетки:

$<?php 

class MyTuxedo_OutOfStock_Block_Adminhtml_Web_Grid extends Mage_Adminhtml_Block_Widget_Grid 
{ 
    public function __construct() 
{ 
    parent::__construct(); 
    $this->setId('OOSGrid'); 
    $this->setDefaultSort('OOS_id'); 
    $this->setDefaultDir('ASC'); 
    $this->setSaveParametersInSession(true); 
} 

protected function _prepareCollection() 
{ 
    $collection = Mage::getModel('MyTuxedo/OutOfStock')->getCollection(); 
    $this->setCollection($collection); 
    return parent::_prepareCollection(); 
} 

protected function _prepareColumns() 
{ 
    $this->addColumn('category_name', array(
     'header' => Mage::helper('OutOfStock')->__('Category'), 
     'align'  =>'right', 
     'width'  => '50px', 
     'index'  => 'web_id', 
)); 

    $this->addColumn('sku', array(
     'header' => Mage::helper('OutOfStock')->__('SKU'), 
     'align'  =>'left', 
     'index'  => 'title', 
)); 

/* 
    $this->addColumn('quantity', array(
'header' => Mage::helper('OutOfStock')->__('Quantity Available'), 
'width'  => '150px', 
'index'  => 'content', 
)); 
*/ 

    $this->addColumn('Backorder allowed', array(
     'header' => Mage::helper('OutOfStock')->__('Status'), 
     'align'  => 'left', 
     'width'  => '80px', 
     'index'  => 'status', 
     'type'  => 'options', 
     'options' => array(
      1 => 'Enabled', 
      2 => 'Disabled', 
    ), 
)); 

    $this->addColumn('action', 
     array(
      'header' => Mage::helper('OutOfStock')->__('Action'), 
      'width'  => '100', 
      'type'  => 'action', 
      'getter' => 'getId', 
      'actions' => array(
       array(
        'caption' => Mage::helper('OutOfStock')->__('Edit'), 
        'url'  => array('base'=> '*/*/edit'), 
        'field'  => 'id' 
       ) 
      ), 
      'filter' => false, 
      'sortable' => false, 
      'index'  => 'stores', 
      'is_system' => true, 
    )); 

$this->addExportType('*/*/exportCsv', Mage::helper('OutOfStock')->__('CSV')); 
$this->addExportType('*/*/exportXml', Mage::helper('OutOfStock')->__('XML')); 

    return parent::_prepareColumns(); 
} 


public function getRowUrl($row) 
{ 
    return $this->getUrl('*/*/edit', array('id' => $row->getId())); 
} 

Я использую контроллер для вызова метода с помощью:

<?php 
class MyTuxedo_OutOfStock_IndexController extends Mage_Adminhtml_Controller_Action 
{ 
public function indexAction() 
{ 
    $this->loadLayout(); 
    $this->_addContent($this->getLayout()->createBlock('OutOfStock/adminhtml_OutOfStock')); 
    $this->renderLayout(); 
    } 
} 

Layout файл состоит из:

<?xml version=“1.0??> 
<layout version=“0.1.0?> 
    <OutOfStock_index_index> 
    <reference name=“content”> 
    <block type=“OutOfStock/adminhtml_OutOfStock“ name=“OutOfStock“ /> 
</reference> 
</OutOfStock_index_index> 
</layout> 

И, наконец, базовый файл блока:

<?php 
class MyTuxedo_OutOfStock_Block_Adminhtml_OutOfStock extends Mage_Adminhtml_Block_Widget_Grid_Container 
{ 
public function __construct() 
{ 
$this->_controller = ‘adminhtml_OutOfStock’; 
$this->_blockGroup = ‘OutOfStock’; 
$this->_headerText = Mage::helper(‘OutOfStock’)->__(‘Item Manager’); 
    $this->_addButtonLabel = Mage::helper(‘OutOfStock’)->__(‘Add Item’); 
parent::__construct(); 
    } 
} 

Я пробовал все и что угодно, чтобы получить сетку, чтобы показать на бэкэнде, она просто абсолютно отказывается работать. Запуск эха в indexcontroller отлично работает, я даже назвал мелкий блок CMS изнутри контроллера, просто вызвав сам блок, отказывается работать.

Есть ли у кого-нибудь предложения? Можно также отправить файл config.xml, если это необходимо, просто не хотелось слишком много раздувать вопрос!

Спасибо!

Config.xml

<?xml version="1.0"?> 
<config> 
<modules> 
    <MyTuxedo_OutOfStock>  
    <version>0.1.0</version> 
    </MyTuxedo_OutOfStock> 
</modules> 
<adminhtml> 
    <layout>  
    <updates>  
     <outofstock>   
     <file>OutOfStock.xml</file>  
     </outofstock>  
    </updates> 
</layout>   
<acl>   
<resources>  
     <admin>  
     <children>  
       <outofstock>  
        <title>Out of Stock Items</title>  
        <children>       
      <OutOfStock>  
        <title>Out of Stock Items</title>      
      </OutOfStock>     
     </children>   
      </outofstock>    
    </children>  
     </admin> 
     </resources> 
    </acl> 
    </adminhtml> 
    <global> 
    <models> 
<outofstock> 
    <class>MyTuxedo_OutOfStock_Model</class> 
</outofstock> 
    </models>  
    <helpers>  
    <outofstock> 
     <class>MyTuxedo_OutOfStock_Helper</class>  
    </outofstock> 
    </helpers> 
<blocks> 
<outofstock> 
<class>MyTuxedo_OutOfStock_Block</class> 
</outofstock> 
</blocks> 
</global> 
    <admin> 
    <routers> 
     <MyTuxedo_OutOfStock> 
      <use>admin</use> 
      <args> 
       <module>MyTuxedo_OutOfStock</module> 
       <frontName>OutOfStock</frontName> 
      </args> 
     </MyTuxedo_OutOfStock> 
    </routers> 
</admin> 
</config> 

Я фактически изменил область конфигурации, однако я все еще получаю:

2012-06-12T09:43:35+00:00 ERR (3): 
exception 'Mage_Core_Exception' with message 'Invalid block type:  MyTuxedo_OutOfStock_Block_Adminhtml_Nostock' in /chroot/home/mytuxedo /developer.mytuxedo.co.uk/html/app/Mage.php:550 
Stack trace: 
#0 /chroot/home/mytuxedo/developer.mytuxedo.co.uk/html/includes/src/__default.php(24835): Mage::throwException('Invalid block t...') 
#1 /chroot/home/mytuxedo/developer.mytuxedo.co.uk/html/includes/src/__default.php(24777): Mage_Core_Model_Layout->_getBlockInstance('OutOfStock/Admi...', Array) 
#2 /chroot/home/mytuxedo/developer.mytuxedo.co.uk/html/app/code/local/MyTuxedo/OutOfStock/controllers/Adminhtml/OutOfStockController.php(7): Mage_Core_Model_Layout->createBlock('OutOfStock/Admi...') 
#3 /chroot/home/mytuxedo/developer.mytuxedo.co.uk/html/includes/src/__default.php(12068): MyTuxedo_OutOfStock_Adminhtml_OutOfStockController->indexAction() 
#4 /chroot/home/mytuxedo/developer.mytuxedo.co.uk/html/includes/src/__default.php(16116): Mage_Core_Controller_Varien_Action->dispatch('index') 
#5 /chroot/home/mytuxedo/developer.mytuxedo.co.uk/html/includes/src/__default.php(15713): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http)) 
#6 /chroot/home/mytuxedo/developer.mytuxedo.co.uk/html/includes/src/__default.php(17973): Mage_Core_Controller_Varien_Front->dispatch() 
#7 /chroot/home/mytuxedo/developer.mytuxedo.co.uk/html/app/Mage.php(596): Mage_Core_Model_App->run(Array) 
#8 /chroot/home/mytuxedo/developer.mytuxedo.co.uk/html/index.php(97): Mage::run('', 'store') 
#9 {main} 
+0

В вашем индексе do var_dump ($ this-> getLayout() -> createBlock ('OutOfStock/adminhtml_OutOfStock')); и посмотрите, дает ли это объект блока. Мне интересно, могут ли ваши имена классов или поисковые запросы немного выходить из игры. –

+0

Можете ли вы разместить свой config.xml, чтобы проверить псевдонимы блоков. Также попробуйте различный корпус, так как Magento действительно выполняет конвертирование данных в именах поиска. –

+0

Я думаю, что проблема в корпусе - в confix.xml у вас есть outofstock, но в вашем поиске вы используете OutOfStock, попробуйте outofstock/adminhtml_OutOfStock в вашем контроллере макета/индекса –

ответ

0

Фигурные его, не заметил, что процесс компиляции был включен (Не знаю, почему я включил его ?!). - Часы потрачены впустую, для тех, у кого класс не найден, убедитесь, что вы проверяете компилятор перед отладкой !!!

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