2011-11-03 3 views
0

나는 맞춤 모듈을 가지고있다. 사용자 정의 모듈의 레이아웃 파일에서는 고객의 모듈에서 레이아웃을 참조 :Magento - 자바 스크립트에서 컨트롤러 URL 구성하기

<?xml version="1.0"?> 
<layout version="0.1.0"> 
    <customer_account_login> 
     <reference name="before_body_end"> 
      <block type="mymodule/myblock" name="mymodule_myblock" as="mymodule_myblock" /> 
     </reference> 
    </customer_account_login> 
</layout> 

내 블록 클래스의 _toHtml() 메소드가 일부 자바 스크립트를 반환합니다. 이 JavaScript는 내 모듈의 컨트롤러에 비동기 XMLHttpRequest를 만듭니다. 그것은 잘 작동하지만 해결할 방법을 잘 모르겠다는 한 가지 문제가 있습니다 ...

내 첫 번째 시도에서 내 JavaScript의 XMLHttpRequest가/mymodule/mycontroller/myaction에 POST되었을 때 작동하지 않았습니다. 나는 404를 얻었다). 요청이 만들어진 페이지는 http://myplace.com/index.php/customer/account/login/ 이었으므로 POST 요청이 생성 된 URL에 "/index.php"가 추가되어 이제는 /index.php/mymodule/mycontroller/myaction이되었습니다. 그게 효과가 있었어. 그러나 그것은 일반적인 것이 아닙니다.

제 질문은 내 URL에서 index.php를 제거하는 방법이 아닙니다. (이 사이트의 게시물을 보았습니다.) Magento 설치에 내 확장 프로그램이 설치되어 있어야합니다. 특정 경우에 URL을 구성하는 방법을 알아야합니다.

페이지는 항상 customer/account/login이 아니므로 window.location.pathname을보고 결과를 파싱 할 수는 없습니다.

아이디어가 있으십니까?

감사합니다.

+0

사실, 그냥 아이디어가있었습니다. _toHtml에서 '기본 URL이 무엇인지'를 말할 수 있고 'http://myplace.com/index.php'또는 'index.php'라는 대답을 얻으면 JS I에이를 포함시킬 수 있습니다. 브라우저로 전달하십시오. 나는 그것을 조사 할 것입니다 ... – user265330

답변

3
<?php echo $this->getUrl('module/controller/action'); ?> 

모든 블록 또는 템플릿 (.phtml) 파일과 Magento에서이를 수행하는 가장 좋은 방법입니다. php를 실행하지 않는 .js 파일에서 수행하는 경우 그냥 수행하십시오.

var target = '/module/controller/action' 

그럴 필요가 있습니다.

+0

고맙습니다. 나는 원래의 게시물에'Mage :: getBaseUrl (Mage_Core_Model_Store :: URL_TYPE_LINK); '을 사용하여 주석을 구현했지만 대신 제안에 따를 것입니다. – user265330

관련 문제