كيف يمكنني توجيه طريقة عمل المسؤول إلى غير `indexAction()`؟

magento.stackexchange https://magento.stackexchange.com//questions/44755

سؤال

في وحدتي، أقوم بإعداد القائمة الخاصة بي مثل هذا.

 <menu>
     <catalog>
        <children>
            <rkt_arattr translate="title" module="rkt_arattr">
                <title>Manage My Custom Attribute</title>
                <sort_order>100</sort_order>
                <children>
                    <install_attr translate="title" module="rkt_arattr">
                        <title>Install My Attribute</title>
                        <action>adminhtml/catalog_arattr_install</action>
                        <sort_order>10</sort_order>
                    </install_attr>
                </children>
            </rkt_arattr>
        </children>
     </catalog>
 </menu>

الكود الذي تحتاج إلى التركيز عليه هو action

 <action>adminhtml/catalog_arattr_install</action>

بالنسبة لهذه القيمة، يبدو عنوان URL الخاص بي هكذا

www.mydomain.com/admin/catalog_arattr_install/index/key/[key_value]

وفقًا لهذا المعرف، تتوقع Magento إعدادًا لوحدة التحكم مثل هذا.

ملف : app/code/local/Namespace/Modulename/controllers/Adminhtml/Catalog/Araattr/InstallController.php

<?php
class Namespace_Modulename_Adminhtml_Catalog_Arattr_InstallController extends Mage_Adminhtml_Contorller_Action
{
     public function indexAction()
     {

     }
}

إلا أن هذا ليس ما أريد..أحتاج إلى تحليل عنوان URL الخاص بي مثل هذا.

www.mydomain.com/admin/catalog_arattr/install/key/[key_value]

يعني أنني أريد أن يتم استدعاء الطريقة أدناه عند النقر على القائمة

ملف : app/code/local/Namespace/Modulename/controllers/Adminhtml/Catalog/ArattrController.php

<?php
class Namespace_Modulename_Adminhtml_Catalog_ArattrController extends Mage_Adminhtml_Contorller_Action
{
     public function installAction()
     {

     }
}

ولكن يبدو أن الماجنتو يبحث عنه دائمًا indexAction() عندما نقوم بإعداد القائمة.

هل هناك أي طريقة للتوجيه إلى الإجراء المخصص الخاص بي عند النقر على القائمة؟

هل كانت مفيدة؟

المحلول

ينبغي أن تكون بسيطة مثل إضافة أجزاء إضافية إلى action العقدة.

<action>adminhtml/your_controller/your_action</action>

تحقق من كيفية عمل جزء التنزيلات في قسم الإدارة.

<action>adminhtml/report_product/downloads</action>

هنا وحدة التحكم Mage_Adminhtml_Report_ProductController والفعل هو downloadsAction

نصائح أخرى

لك action ينبغي أن يكون المسار adminhtml/catalog_arattr/install لتحديد install قسم من المسار كالعمل.كل / شرطة مائلة تفصل بين الوحدة ووحدة التحكم ثم الإجراء، بحيث يكون لديك شرطة مائلة واحدة فقط، ومن المفترض أن يكون الإجراء indexAction().باستخدام عنوان URL أعلاه، سيستهدف الطلب Namespace_Modulename_Adminhtml_Catalog_ArattrController وداخل ذلك installAction().ستحتاج بالطبع إلى تغيير موقع وحدة التحكم إلى دليل واحد أعلى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top