Magento 模块和ajax调用
我正在尝试创建一个对自定义控制器的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</
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)上应用了