Я работаю над модулем для админки в Magento.Я пытаюсь следовать учебному пособию Алана Шторма на Администраторских контроллерах Magento , но не могу заставить мой контроллер что-либо делать.Я думаю, что это может быть связано с маршрутизацией, но я не уверен.Он показывает мне шаблон внешнего интерфейса с ошибкой 404.
(Примечание: Я включил весь соответствующий код здесь. Актуальный вопрос находится в самом низу. )
Модуль называется Mynamespace_Donor и находится в app / code / local / Mynamespace / Donor /.
Мой etc / config.xml выглядит следующим образом:
<?xml version="1.0"?>
<config>
<modules>
<Mynamespace_Donor>
<version>0.1.0</version>
</Mynamespace_Donor>
</modules>
<global>
<helpers>
<donor>
<class>Mynamespace_Donor_Helper</class>
</donor>
</helpers>
<resources>
<donor_setup>
<setup>
<module>Mynamespace_Donor</module>
</setup>
</donor_setup>
</resources>
</global>
<admin>
<routers>
<donor>
<use>admin</use>
<args>
<module>Mynamespace_Donor</module>
<frontname>donor</frontname>
</args>
</donor>
</routers>
</admin>
<adminhtml>
<menu>
<donor translate="title" module="donor">
<title>Donor</title>
<sort_order>42</sort_order>
<children>
<manage_donors module="donor">
<title>Manage Donors</title>
<action>donor/index/index</action>
</manage_donors>
</children>
</donor>
</menu>
</adminhtml>
</config>
И мои контроллеры / IndexController.PHP выглядит так:
<?php
class Mynamespace_Donor_IndexController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$this->loadLayout();
//create a text block with the name of "example-block"
$block = $this->getLayout()
->createBlock('core/text', 'example-block')
->setText('<h1>This is a text block</h1>');
$this->_addContent($block);
$this->renderLayout();
}
}
Пункт меню указывает мне на /index.php/donor/index/index/key/e98a...
, который показывает страницу 404.Когда я пытаюсь перейти непосредственно к /donor
, /index.php/donor
, /index.php/donor/index
и т. Д., Я все равно получаю 404 ошибки.
Если я удаляю <helpers>
из конфигурации, Magento жалуется, что не можетНайди это.Если я удаляю секцию <adminhtml>
, она перестает жаловаться, хотя у меня там все еще есть секция <admin><routers>
(не знаю, нужен ли помощнику по маршрутизации или это вообще важно).
Я также пытался добавить этот блок под <adminhtml>
, но когда я пытаюсь редактировать разрешения роли, я получаю белую страницу с этой ошибкой: Fatal error: Class 'Mage_Mynamespace_Donor_Helper_Data' not found in /home/mysite/public_html/magento_dev_1_10/app/Mage.php on line 520
<acl>
<resources>
<admin>
<children>
<donor translate="title" module="Mynamespace_Donor">
<title>Donors</title>
<sort_order>60</sort_order>
<children>
<manage_donors>
<title>Manage Donors</title>
</manage_donors>
</children>
</donor>
</children>
</admin>
</resources>
</acl>
Вопрос: Что я здесь не так делаю?Почему я не могу получить доступ к этому контроллеру?
И, наконец, в примере кода Алана URL начинался с имени модуля, но я бы хотел, чтобы мой начинался с /admin/donor
вместо /donor
.Какие изменения мне нужно внести для этого?
Редактировать 1 Конечная цель - создать новую вкладку в административной области для управления донорами и связанными данными в системе.Когда вы нажимаете на какой-то пункт меню, я хотел бы показать сетку и иметь вложенные вкладки и тому подобное.Я не хочу переопределить контроллер adminhtml - хотя я расширяю его согласно предложению Алана :
Единственное отличие от стандартного контроллера здесьчто мы расширяем Mage_Adminhtml_Controller_Action вместо Mage_Core_Controller_Varien_Action.Mage_Adminhtml_Controller_Action содержит важный код для проверки сеанса администратора, а также несколько методов, которые полезны в контексте консоли администратора.
Так что на этом рисунке нажатие на этот первый элемент подменю должно вызвать действие Indexмоего контроллера и показать сетку или что-то для управления донорами.