对我正在尝试编写的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,只是不想太夸大问题!
谢谢!
的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 :(得分:0)
想出来,没有注意到编译过程已经开启(不知道我为什么要打开它?!)。 - 浪费时间,对于没有找到类的人,请确保在调试之前检查编译器!!!