我需要一个空白页面来接收ajax帖子并返回json。

如果我在后端的任何页面下方运行代码,该链接将打开一个空白页面,该页面在我的控制器和路由器上设置。

<?php echo Mage::helper('adminhtml')->getUrl('installments/adminhtml_ajax/'); ?>

但是,如果我遇到前端的任何页面,URL 的键都不一样,我会被定向到仪表板。

我不知道如何获取前端的正确 URL,有人会有一个可行的想法吗?

例子:

Backend  = installments/adminhtml_ajax/index/key/000085c50c4882df8a9cae52c8392227/
Frontend = installments/adminhtml_ajax/index/key/99edadac5bc5bb1e2421d3be38db525e/

路由器

<frontend>
    <routers>
        <installments>
            <use>admin</use>
            <args>
                <module>Dexxtz_Installments</module>
                <frontName>installments</frontName>
            </args>
        </installments>         
    </routers>
</frontend>
<admin>
    <routers>
        <installments>
            <use>admin</use>
            <args>
                <module>Dexxtz_Installments</module>
                <frontName>installments</frontName>
            </args>
        </installments>
    </routers>
</admin>

已经改变了标准的前端,但没有任何改变。

有帮助吗?

解决方案

key url 中的内容是根据管理会话生成的。
而且您无法共享管理和前端会话,这就是为什么从前端进行调用时您会得到不同的会话密钥。

无论如何,从前端调用后端操作并不是一个好的做法。
您应该有 2 个独立的控制器,一个用于后端,一个用于前端。
为了不重复代码,您可以将所有内容放入助手的方法中,然后在两个控制器中调用该方法。

其他提示

您的前台和管理员 <routers> (<frontName>installments</frontName>) 不应该相同。

它们是配置管理模块的两种方法

1)给它一个不同的正面名称

  <admin>
    <routers>
        <installments>
            <use>admin</use>
            <args>
                <module>Dexxtz_Installments</module>
                <frontName>admin_installments</frontName>

2) 将模块放在 adminhtml 之前/之后

<admin>
      <routers>
        <adminhtml>
            <args>
                <modules>
                    <Company_Adminhtml before="Mage_Adminhtml">Company_Adminhtml</Company_Adminhtml>
许可以下: CC-BY-SA归因
scroll top