Контролери на административния модул на 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