관리자 작업 메서드를 `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/[키_값]
이 ulr에 따라 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/[키_값]
메뉴를 클릭하면 아래 메소드가 호출되기를 원한다는 의미입니다.
파일: 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()
{
}
}
하지만 magento는 항상 다음을 찾는 것 같습니다. 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
경로의 섹션을 작업으로 사용합니다.각 /
슬래시는 모듈, 컨트롤러, 동작을 분리하므로 슬래시가 1개만 있으므로 동작은 다음과 같이 간주됩니다. indexAction()
.위 URL을 사용하면 요청이 다음을 타겟팅합니다. Namespace_Modulename_Adminhtml_Catalog_ArattrController
그리고 그 안에 installAction()
.물론 컨트롤러의 위치를 한 단계 높은 디렉터리로 변경해야 합니다.