كيف يمكنني توجيه طريقة عمل المسؤول إلى غير `indexAction()`؟
-
12-12-2019 - |
سؤال
في وحدتي، أقوم بإعداد القائمة الخاصة بي مثل هذا.
<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()
.ستحتاج بالطبع إلى تغيير موقع وحدة التحكم إلى دليل واحد أعلى.