Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento 模块和ajax调用_Magento_Magento 1.4 - Fatal编程技术网

Magento 模块和ajax调用

Magento 模块和ajax调用,magento,magento-1.4,Magento,Magento 1.4,我正在尝试创建一个对自定义控制器的ajax调用 我一直在下面:-它给出了一个如何创建的简单示例 因此,我有以下文件: app/etc/moudles/BM_Sidebar.xml <?xml version="1.0"?> <config> <modules> <BM_Sidebar> <active>true</active> <codePool>local</

我正在尝试创建一个对自定义控制器的ajax调用

我一直在下面:-它给出了一个如何创建的简单示例

因此,我有以下文件:

app/etc/moudles/BM_Sidebar.xml

<?xml version="1.0"?>
<config>
  <modules>
    <BM_Sidebar>
        <active>true</active>
        <codePool>local</codePool>
    </BM_Sidebar>
  </modules>
</config>
<?xml version="1.0"?>
<config>
  <modules>
    <BM_Sidebar>
      <version>0.1.0</version>
    </BM_Sidebar>
  </modules>
  <frontend>
    <routers>
      <sidebar>
        <use>standard</use>
        <args>
          <module>BM_Sidebar</module>
          <frontName>carfilter</frontName>
        </args>
      </sidebar>
    </routers>
    <layout>
      <updates>
        <sidebar>
          <file>sidebar.xml</file>
        </sidebar>
      </updates>
    </layout>
  </frontend>
</config>
app/code/local/BM/Sidebar/controllers/etc/config.xml

<?xml version="1.0"?>
<config>
  <modules>
    <BM_Sidebar>
        <active>true</active>
        <codePool>local</codePool>
    </BM_Sidebar>
  </modules>
</config>
<?xml version="1.0"?>
<config>
  <modules>
    <BM_Sidebar>
      <version>0.1.0</version>
    </BM_Sidebar>
  </modules>
  <frontend>
    <routers>
      <sidebar>
        <use>standard</use>
        <args>
          <module>BM_Sidebar</module>
          <frontName>carfilter</frontName>
        </args>
      </sidebar>
    </routers>
    <layout>
      <updates>
        <sidebar>
          <file>sidebar.xml</file>
        </sidebar>
      </updates>
    </layout>
  </frontend>
</config>

0.1.0
标准
BM_侧边栏
汽车过滤器
sidebar.xml
我正在努力准确地计算出我需要在
sidebar.xml中输入什么

<?xml version="1.0"?>
<config>
  <modules>
    <BM_Sidebar>
        <active>true</active>
        <codePool>local</codePool>
    </BM_Sidebar>
  </modules>
</config>
<?xml version="1.0"?>
<config>
  <modules>
    <BM_Sidebar>
      <version>0.1.0</version>
    </BM_Sidebar>
  </modules>
  <frontend>
    <routers>
      <sidebar>
        <use>standard</use>
        <args>
          <module>BM_Sidebar</module>
          <frontName>carfilter</frontName>
        </args>
      </sidebar>
    </routers>
    <layout>
      <updates>
        <sidebar>
          <file>sidebar.xml</file>
        </sidebar>
      </updates>
    </layout>
  </frontend>
</config>
是否需要创建块类


谢谢

您需要在模板布局目录中创建sidebar.xml文件。这将指向您的控制器。我不能在这里共享整个文件结构。但您可以共享一个类似的组件,从中可以下载/创建自定义模块

希望它能帮助你

如何使用AJAX
  • 它总是从config.xml开始:

  • 声明您的路由器:使用与
    frontName
    标记内容相同的路由器名称

    <frontend>
        <routers>
            <carfilter>
                <use>standard</use>
                <args>
                    <module>BM_Sidebar</module>
                    <frontName>carfilter</frontName>
                </args>
            </carfilter>
        </routers>
    </frontend>
    
  • phtml:希望用ajax显示的html

    var Carfilter = Class.create();
    Carfilter.prototype = {
        initialize: function(ajaxCallUrl, divToUpdate) {
            this.url = ajaxCallUrl;
            this.div = divToUpdate;
            this.makeAjaxCall();
        },
    
        makeAjaxCall: function() {
            new Ajax.Request(this.url, {
                onSuccess: function(transport) {
                    var response = transport.responseText.evalJSON();
                    $(this.div).update(response.outputHtml);
                }.bind(this)
            });
        }
    };
    
  • 控制器:本例中的2个操作、页面加载时的索引和ajax:

    <?php
    
    class BM_Sidebar_AjaxController extends Mage_Core_Controller_Front_Action
    {
    
        public function indexAction()
        {
            $this->loadLayout();
            $this->_initLayoutMessages('customer/session');
            $this->getLayout()->getBlock('head')->setTitle($this->__('Page title'));
            $this->renderLayout();
        }
    
        public function ajaxAction()
        {
            $isAjax = Mage::app()->getRequest()->isAjax();
            if ($isAjax) {
                $layout = $this->getLayout();
                $update = $layout->getUpdate();
                $update->load('carfilter_ajax_ajax'); //load the layout you defined in layout xml file
                $layout->generateXml();
                $layout->generateBlocks();
                $output = $layout->getOutput();
                $this->getResponse()->setHeader('Content-type', 'application/json');
                $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array('outputHtml' => $output)));
            }
        }
    
    }
    
    generateXml();
    $layout->generateBlocks();
    $output=$layout->getOutput();
    $this->getResponse()->setHeader('Content-type','application/json');
    $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array('outputHtml'=>$output));
    }
    }
    }
    

  • 为了回答您的问题,您不必创建自己的块(在我的示例中,我没有),但您可能希望将模板文件中所需的函数放在方便的地方

    解释您希望从这个自定义模块和ajax调用中获得什么?我想检索数据。但目前,当我尝试使用domain/com/carfilterin ajaxCall时,我得到了一个404。你在success.bind(this)上应用了