Magento - 在JavaScript中构建控制器URL

时间:2011-11-03 11:52:50

标签: magento

我有一个自定义模块。在自定义模块的布局文件中,它引用了客户模块的布局:

<?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并解析结果。

有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

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

您可以从任何阻止或模板(.phtml)文件中执行此操作,这是在Magento中执行此操作的最佳方法。如果您是从没有运行php的.js文件中进行的,只需执行

var target = '/module/controller/action'

这应该有用。