Magento - создание URL контроллера в JavaScript - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть пользовательский модуль. В файле макета пользовательского модуля он ссылается на макет из клиентского модуля:

<?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 для контроллера в моем модуле. Это работает нормально, но у меня есть одна проблема, которую я не знаю, как решить ...

При первой попытке, когда запрос XMLHttpRequest в моем JavaScript был помещен в / mymodule / mycontroller / myaction, он не работал (я получил 404). Страница, с которой был сделан запрос, была http://myplace.com/index.php/customer/account/login/,, поэтому я добавил «/index.php» к URL-адресу, на который был сделан запрос POST, так что теперь он был /index.php/mymodule/mycontroller/myaction , Это сработало. Но это не общее.

Мой вопрос не в том, как мне избавиться от index.php из моих URL-адресов (я видел несколько сообщений об этом на этом сайте), а в том, что если мое расширение установлено в нескольких установках Magento, мне нужно знать, как создать URL в любом конкретном случае.

Страница не всегда будет клиент / аккаунт / логин, поэтому я не могу просто посмотреть на window.location.pathname и проанализировать результат.

Есть идеи?

Спасибо.

1 Ответ

3 голосов
/ 03 ноября 2011
<?php echo $this->getUrl('module/controller/action'); ?>

Вы можете сделать это из любого файла блока или шаблона (.phtml), и это лучший способ сделать это в Magento. Если вы делаете это из файла .js, который не запускает php, просто выполните

var target = '/module/controller/action'

и это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...