对我正在尝试编写的 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”>
<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}