Magento 용으로 빌드하고있는 모듈에 Mage_Customer_AccountController
클래스를 오버로드하려고 시도했지만 어떤 이유로 작동하지 않고 클래스가 인스턴스화 되어도 내 메서드가 호출되지 않습니다.Magento - 오버로드 컨트롤러 클래스
[...]
<frontend>
<routers>
<customer>
<args>
<modules>
<mycompany_mymodule before="Mage_Customer">Mycompany_Mymodule_Override</mycompany_mymodule>
</modules>
</args>
</customer>
</routers>
</frontend>
[...]
을 그리고 controllers/Override/AccountController.php
에서 내가 가진 : 내 etc/config.xml
에서
내가있어
<?php
require_once('Mage/Customer/controllers/AccountController.php');
class Mycompany_Mymodule_Override_AccountController extends Mage_Customer_AccountController {
/**
* This runs if uncommented
*/
//public function __construct() {
// Mage::log("THIS GETS LOGGED");
//}
/**
* This should be replacing the default loginAction but doesn't run.
*/
public function loginAction() {
Mage::log('THIS DOES NOT GET LOGGED');
}
}
?>
내가 특이한 찾을 것이 분명 위의 생성자는 경우 주석하지만 loginAction
방법 아무튼를 실행한다는 것입니다 대신에 메서드가 Mage_Customer_AccountController
에서 실행됩니다.
내가 실제로달성하기 위해 노력하고있어 그들이 사용자를 처리하는 외부 API/서비스로이 모듈의 관계 때문에 로그 아웃 한 후 다시 /customer/account/login
사용자를 리디렉션에서 AccountController
을 중지하는 것입니다. 로그 아웃하기 전에 어떤 페이지로든 사용자를 리디렉션하기 전에 controller_action_predispatch_customer_account_logout
에서 트리거 한 관찰자를 사용하여 시도했지만 외부 서비스로 리디렉션되기 전에 AccountController
단계를 거쳐 /customer/account/login
으로 리디렉션됩니다.
누구든지이 일을하는 더 좋은 방법에 대한 제안이 있다면 나는 모두 귀입니다.
편집 : 그것은 내 문제가 다른 곳에서 나는 모든 호출되지 않는 호출되는 한 가정 원래 동작 방식 그대로 나타납니다. 대신 Magento의 어딘가에서 위의 관찰자 방법을 실행 한 후 /customer/account/login
으로 리디렉션을 실행합니다 (관찰자가 리디렉션을 설정하려고 시도하지만 무시됩니다. (예, 리디렉션에 사용하는 URL이 대부분입니다. 분명히 아니요 /customer/account/login
)).
이 예제에서는 'Mymodule'이지만 분명히 게시하기 전에 검색을 수행했습니다. – mludd
로컬 코드 풀에서 오버라이드 된 경우에는'controllers/Customer/AccountController.php'가 있어야합니다. 또한이 액션을'custom/account/login'이라고 부르면'public function loginAction()'만 호출됩니다. – Slimshadddyyy
@Slimshadddyyy : 당신은 무엇을 의미합니까? 내 config.xml에서 Magento가'controllers/Override /'에서 나의 클래스를 찾아야한다고 지정하고있다. – mludd