2014-01-17 2 views
1

동일한 Magento 코어 컨트롤러를 덮어 쓸 컨트롤러를 여러 개 만들 수 있습니까? 예를 들어, 각 모듈에 Magento의 핵심 AccountController 인 Mage/Customer를 재정의하기 위해 AccountController.php를 만들 수 있습니까? 두 모듈이 저장 코어 모듈에 의존하고 동일한 컨트롤러를 덮어 쓰는 경우 충돌이 발생합니다. 물론 각 컨트롤러는 코어 컨트롤러의 다른 동작을 무시합니다.하나 이상의 컨트롤러를 만들어 동일한 Magento 코어 컨트롤러를 무시할 수 있습니까?

답변

1

예 동일한 코어 컨트롤러를 확장하는 둘 이상의 모듈을 만들 수 있습니다.

먼저 코어 컨트롤러를 포함시킨 다음 원하는 특정 기능 만 오버로드하고 싶을 것입니다.

require_once 'Mage/Customer/controllers/AccountController.php'; 
class Namespace_Module1_AccountController extends Mage_Customer_AccountController 
{ 
    public function indexAction(){ 

     //this will overload the index action for the core customer AccountController 

    } 
} 

변경 한 동작을 각 모듈마다 반복하고 변경하려는 동작 만 오버로드하십시오. 예를 들어, 두 x 째 모듈이 저장 조!에 과부하를 걸기를 원하면 작업을 수행하십시오.

+0

하지만 두 모듈이 동일한 기능을 사용한다면 어떻게 작동할까요? 둘 다 또는 하나가 작동할까요? 또는 어떤 confiliction/error가 발생합니까? –

+0

필자는 이것을 테스트하지는 않았지만, 두 모듈 모두 같은 이름의 함수를 정의하면 그 중 하나는 항상 무시됩니다 (마지막에 config.xml 파일이로드되고 마지막으로로드 된 모듈과 _think_ 타사 모듈 알파벳순으로로드 됨). 그러나 둘 다 핵심 컨트롤러에서 상속 된 공통 기능에 의존한다면 괜찮습니다. 그들은 그것과 공존 할 수 있습니다. –

관련 문제