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 に答える