我有一个自定义模块。在自定义模块的布局文件中,它引用了客户模块的布局:
<?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。 JavaScript为我的模块中的控制器生成异步XMLHttpRequest。它工作正常,但我有一个问题,我不知道如何解决......
在我的第一次尝试中,当我的JavaScript中的XMLHttpRequest被POST到/ mymodule / mycontroller / myaction时,它不起作用(我得到了404)。发出请求的页面是http://myplace.com/index.php/customer/account/login/,因此我将“/index.php”添加到发出POST请求的URL,现在它是/index.php/mymodule/mycontroller/myaction 。那很有效。但它不是通用的。
我的问题不是我如何从我的网址中删除index.php(我在这个网站上看过一些关于它的帖子),而是如果我的扩展安装在几个Magento安装上,我需要知道如何在任何特定情况下构建URL。
该页面并不总是客户/帐户/登录,因此我不能只查看window.location.pathname并解析结果。
有什么想法吗?
谢谢。
答案 0 :(得分:3)
<?php echo $this->getUrl('module/controller/action'); ?>
您可以从任何阻止或模板(.phtml)文件中执行此操作,这是在Magento中执行此操作的最佳方法。如果您是从没有运行php的.js文件中进行的,只需执行
var target = '/module/controller/action'
这应该有用。