Очень запутано с модулем 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}
В вашем индексе do var_dump ($ this-> getLayout() -> createBlock ('OutOfStock/adminhtml_OutOfStock')); и посмотрите, дает ли это объект блока. Мне интересно, могут ли ваши имена классов или поисковые запросы немного выходить из игры. –
Можете ли вы разместить свой config.xml, чтобы проверить псевдонимы блоков. Также попробуйте различный корпус, так как Magento действительно выполняет конвертирование данных в именах поиска. –
Я думаю, что проблема в корпусе - в confix.xml у вас есть outofstock, но в вашем поиске вы используете OutOfStock, попробуйте outofstock/adminhtml_OutOfStock в вашем контроллере макета/индекса –