1

对我正在尝试编写的 adminhtml 模块感到非常困惑!

实际上,我已经编写并工作了 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();
    }
}

布局文件包含以下内容:

<?xml version=“1.0??>
<layout version=“0.1.0?>
  <OutOfStock_index_index>
    <reference name=“content”&gt;
  <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 中运行 echo 工作正常,我什至在控制器内调用了一个 CMS 静态块,只是调用块本身拒绝工作。

有没有人有任何建议?如果需要,也可以发布 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}
4

1 回答 1

0

想通了,没有注意到编译过程被打开了(不知道我为什么打开它?!)。- 浪费时间,对于那些找不到类的人,请确保在调试之前检查编译器!!!

于 2012-06-12T12:12:02.623 回答