0

我正在尝试制作 Magento 自定义管理模块,并希望在模块页面之间传递信息或返回当前页面本身进行处理。

例如,假设我想连接到我的数据库并在单击我的管理模块页面上的某个按钮后通过 AJAX 添加一些数据,我需要一些独立的脚本或页面,我可以在某个地方发出请求。制作这样的脚本不是问题,但你怎么称呼它让我感到困惑。

顺便说一句,我想如果有一些独立的脚本是 AJAX 的正确方法,那么下面是正确的做法吗?

<?php

require_once('app/Mage.php');
umask(0);
Mage::app('admin');

// do something

所以在普通的 PHP 中,我可以将 JavaScript Ajax 请求指向类似的地方/script/dosomething.php,但在 Magento 中,它的工作方式非常不同,调用脚本的绝对路径似乎是非常糟糕的做法,可能不起作用。

那么我应该在哪里放置一个脚本来被 Ajax 调用,我将如何调用它呢?

4

1 回答 1

3

假设您使用此方法创建管理模块http://alanstorm.com/magento_admin_controllers

在你的控制器中你可以做

class Alanstormdotcom_Adminhelloworld_IndexController extends Mage_Adminhtml_Controller_Action
{
    public function indexAction()
    {
        $this->loadLayout();

           //display template.phtml (using update layout.xml)

        $this->renderLayout();
    }

    public function dosomethingAction(){
         //do database update
         // return a json
    }
}

template.phtml

<javascript>
  url = '<?php echo Mage::helper("adminhtml")->getUrl('/adminhelloworld/index/dosomething') ?>';

  new Ajax.Request(url, {
     method:'get',
     requestHeaders: {Accept: 'application/json'},
     onSuccess: function(transport) {
         json = transport.responseText.evalJSON();

         if(json.Status.code == 200){
           //do whatever you want with the result
         }
      }
   });
 </javascript>
于 2012-11-05T18:32:34.867 回答