Контроллеры административного модуля Magento — загрузка другого действия

Я пытаюсь создать новый модуль для Magento, который виден только из области администрирования.

Я успешно создал модуль и теперь создал контроллер под названием «editproducts». В этом контроллере у меня есть indexAction и testAction.

Когда я перехожу к /quickedit/editproducts/, он отлично загружает indexAction из контроллера, однако, когда я перехожу к /quickedit/editproducts/test/, он перенаправляется на панель управления и не вызывает testAction. Судя по учебным пособиям, которые я видел, я все правильно настроил.

Мой файл config.xml:

<config>
<modules>
    <Test_Quickedit>
        <version>0.1.0</version>
    </Test_Quickedit>
</modules>

<global>
    <helpers>
        <quickedit>
            <class>Test_Quickedit_Helper</class>
        </quickedit>  
    </helpers>
</global>        

<admin>
    <routers>
        <the_name_of_this_element_is_not_important_it_should_be_unique>
            <use>admin</use>
            <args>
                <module>Test_Quickedit</module>
                <frontName>quickedit</frontName>
            </args>
        </the_name_of_this_element_is_not_important_it_should_be_unique>
    </routers>
 </admin>

<adminhtml>
    <menu>
        <menu1 translate="title" module="quickedit">
            <title>Test</title>
            <sort_order>60</sort_order>
            <children>
                <menuitem1 module="quickedit">
                    <title>Edit Products</title>
                    <action>quickedit/editproducts</action>
                </menuitem1>
            </children>                
        </menu1>
    </menu>
<acl>
        <resources>
            <admin>
                <children>
                    <catalog>
                        <children>
                            <quickedit_editproducts>
                                <title>Edit Products</title>
                            </quickedit_editproducts>
                        </children>
                    </catalog>
                </children>
            </admin>
        </resources>
    </acl>
</adminhtml>    
</config>

Мой EditproductsController.php

class Test_Quickedit_EditproductsController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
    echo 'edit products';
}

public function testAction()
{
    echo 'test';
}
}

person Paul Blundell    schedule 28.08.2012    source источник
comment
как вы сгенерировали URL для testAction? он должен быть сгенерирован из кода, так как ему нужен ключ (нельзя получить доступ напрямую, изменив URL-адрес из браузера)   -  person ivantedja    schedule 28.08.2012
comment
Каков путь к вашему EditproductsController? Если вы настроили выход после того, как повторите «тест», он сделает что-нибудь другое?   -  person Nate    schedule 28.08.2012
comment
Привет ivantedja, Где я должен генерировать URL-адреса? Я следовал нескольким руководствам по созданию модуля, и ни в одном из них не упоминалось о создании URL-адресов вручную.   -  person Paul Blundell    schedule 28.08.2012
comment
Привет, Нейт, мой EditproductsController находится в code/community/Test/Quickedit/controllers/ и что странно, если я перехожу к /quickedit/editproducts/, он работает, но при переходе к /quickedit/editproducts/index/ это не так, это обычный?   -  person Paul Blundell    schedule 28.08.2012
comment
в config.xml попробуйте изменить ‹action›quickedit/editproducts‹/action› на ‹action›quickedit/editproducts/edit‹/action›, это работает?   -  person ivantedja    schedule 28.08.2012


Ответы (1)


Это связано с тем, что URL-адрес, который вы перенаправляете, не содержит ключ

Если вы проверите URL-адрес модулей администратора, то увидите, что ключ также добавлен в URL-адрес, поэтому для создания правильного URL-адреса используйте приведенный ниже код.

$URL = Mage::helper("adminhtml")->getUrl("mymodule/adminhtml_mycontroller/myaction/",array("param1"=>1,"param2"=>2));

or

$URL = Mage::helper("adminhtml")->getUrl("mymodule/adminhtml_mycontroller/myaction/");

Надеюсь это поможет!!

person Great Indian Brain    schedule 29.08.2012