Magento 自定义一个搜索功能
最近工作中有一个需求是需要做一个搜索的功能,但是因为需要定制一些外观,所以就不用传统的方法来继承基类GRID。实现这个需求的核心其实就是下面这个方法。
$this->getLayout()->getBlock('yourName')->setYourValue('yourvalue');
大家都知道Magento的MVC架构和其它的MVC框架有点不一样,Magento的V层是从Block调用数据的,在Layout文件夹的配置文件中可以看到下面的配置.
<vendors_dealer_dealer_getdealer>
<reference name="content">
<block type="vendorsproduct/vendor_dealersearch" name="dealer_search" template="ves/filter/dealersearch.phtml" />
</reference>
</vendors_dealer_dealer_getdealer>
这里的type指定的是Block的文件位置,在Phtml页面中的$this就是代表这个Block类的本身,可以在Block这个类里面定义方法然后在phtml页面中调用这个方法得到数据。
现在开始我们来自定义一个搜索方法
一.首先你的数据列表页面需要一个搜索框,下面是phtml页面的代码
<div class="order-filter">
<dl>
<dt class="last odd">订单编号:</dt>
<dd class="last odd">
<ol class="order-filter-item-list">
<li>
<input type="text" class="order-num"/>
<a href="javascript:void(0)" class="order-id-search">查询</a>
</li>
</ol>
</dd>
</dl>
</div>
......数据显示 <script type="text/javascript">
//<![CDATA[
jQuery(".order-id-search").click(function(){ var orderid = jQuery(this).prev().val();
var url = "<?php echo Mage::getBaseUrl().'vendors/sales_order/getorder';?>";
console.log(url); if(!orderid){
alert("查询订单号不能为空!");
return false;
}
window.location.href= url+"?order_id="+orderid; })
//]]>
</script>
二.可以看到输入要搜索的值,再点击搜索其实访问的是控制器的getorder这个方法,于是我们来建立这个方法
public function getOrderAction()
{
$order_id = $this->getRequest()->getParam('order_id',null);
$vendor = Mage::getModel('vendors/session')->getVendor();
$vendor_id = $vendor->getId();
$read = Mage::getSingleton("core/resource")->getConnection('core_read');
$sql = "SELECT × FROM `order` where vendor_id='{$vendor_id}' and order_id='{$order_id}'";//假想sql语句
$result = $read->fetchAll($sql); $this->loadLayout();
$this->getLayout()->getBlock('order_search')->setOrder($result); $this->_setActiveMenu('sales')->_title($this->__('Sales'))->_title($this->__('Orders'));
$this->_addBreadcrumb($this->__('Sales'), $this->__('Sales'));
$this->_addBreadcrumb($this->__('Orders'), $this->__('Orders'));
$this->renderLayout();
}
这里的关键点就是$this->getLayout()->getBlock('order_search')->setOrder($result)这一句代码,这句代码的意思就是给block设定一个模板变量,然后在模板可以使用$this->getOrder()调用数据。
三.建立布局文件的XML
<vendors_sales_order_getorder>
<reference name="content">
<block type="vendorssales/vendor_sales_ordersearch" name="order_search" template="ves/filter/ordersearch.phtml" />
</reference>
</vendors_sales_order_getorder>
这里xml的意思就是在使用getorder这个控制器的方法的时候,会实例化ordersearch这个block,和设定指定的模板文件,这里的name="order_search"极其重要,$this->getLayout()->getBlock('order_search')->setOrder($result)这里的order_search就是这个name="order_search"。
四.建立这个block文件
因为这里不需要模板从Block调用数据,所以建立一个空的Block就可以了
五.建立一个模板文件
模板文件就和数据列表页面的phtml页面代码相似即可,只是这个页面多了$this->getOrder()这个方法,然后把得到的数据遍历出来显示在页面即可。
Magento 自定义一个搜索功能的更多相关文章
- HelloGitHub 小程序上线了,蛋只有一个搜索功能
作者:HelloGitHub-卤蛋 我是...蛋蛋啊,本文是我从零开发「HelloGitHub 小程序」的开发日记,不要把这个系列当作技术文章来读,你将会收获更多的乐趣.♂️ 我只是个 Python ...
- hexo next主题深度优化(四),自定义一个share功能,share.js。
文章目录 背景: 开始: 引入资源: 代码 关键的一步 附:方便学习的小demo 一次成功后还出现上面的bug 结束 2018.12.23发现bug(读者可忽略) 个人博客:https://mmmmm ...
- Android搜索功能的案例,本地保存搜索历史记录......
开发的APP有一个搜索功能,并且需要显示搜索的历史记录,我闲暇之余帮她开发了这个功能,现把该页面抽取成一个demo分享给大家. 实现效果如图所示: 本案例实现起来很简单,所以可以直接拿来嵌入项目中使 ...
- React-Native进阶_7.TextInput的使用实现搜索功能
前面使用TabBar 实现了底部tab标签,通过stackNavigator 实现了页面跳转,接下来,使用TextInput 来实现一个搜索功能. TextInput 属性比较多,不一一介绍,具体可以 ...
- 使用ajax实现搜索功能
最近要做一个搜索功能,网上搜了一圈,终于做出来了,很简单的一个,这里分享我的方法,希望对大家有用,不足之处还请指教. 这里使用ajax提交数据,配合jquery将数据显示出来. 用jq的keyup ...
- 使用jquery select2实现下拉框搜索功能
由于公司后台系统下拉框数据量太多了,用户操作起来要不方便所以增加了下拉框里面一个搜索功能 1从官网下载jquery select2 下来 地址https://select2.github.io/ 2: ...
- 给 hugo 博客添加搜索功能
起因 我的博客使用了 hugo 作为静态生成工具,自带的主题里也没有附带搜索功能.看来,还是得自己给博客添加一个搜索功能. 经过多方查找,从 Hugo Fast Search · GitHub 找到一 ...
- JSTL,自定义一个标签的功能案例
1.自定义一个带有两个属性的标签<max>,用于计算并输出两个数的最大值: 2.自定义一个带有一个属性的标签<lxn:readFile src=“”>,用于输出指定文件的内容 ...
- CustomDialog——一个多功能、通用、可自定义的Dialog
CustomDialog--一个多功能.通用.可自定义的Dialog 依赖 compile 'com.github.SiberiaDante:CustomDialog:v1.0.1' 说明[Cus ...
随机推荐
- 清空highcharts数据
1:清空highcharts图表的数据我们常用的方法就是remove() var seriesList = chart.series; //获得图表的所有序列 var seriesCount=seri ...
- List<string>中的泛型委托
我们先看List<T>.Sort().其定义是:public void Sort( Comparison<T> comparison ) 其要求传入的参数是Comparison ...
- 将普通工程转为mvn标准工程(main resources)
It is sometimes required to change the default source folder working on the java project. One best e ...
- Android:The connection to adb is down, and a severe error has occured.解决方法一
在自己机上打安桌虚拟机,竟然提示“The connection to adb is down, and a severe error has occured.please ensure ......” ...
- css中margin-left与left的区别
研究下拉菜单和弹出菜单时比较所得: 1.直接在css中设置left生效的前提是必须设置父容器position:absolute或relative,如果不设置则会显示为最近一个定位的父对象左边相关的位置 ...
- linux下mysql的忘记root密码的解决办法
因为放寒假家里没有宽带,便很少上网,前几天用手机进入自己的个人博客时竟然返回数据库不能连接的错误,吓我一跳,网站肯定被人黑了,但转头一想我的博客就几篇破文章,谁这么无聊要黑,我并没有立刻去网上找解决的 ...
- 关于使用MVVM模式在WPF的DataGrid控件中实现ComboBox编辑列
最近在做一个组态软件的项目,有一个需求需要在建立IO设备变量的时候选择变量的类型等. 建立IO变量的界面是一个DataGrid实现的,可以一行一行的新建变量,如下如所示: 这里需要使用带有ComboB ...
- 20145337实验三实验报告——敏捷开发与XP实践
20145337实验三实验报告--敏捷开发与XP实践 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 ** 实验步骤**### 敏捷开发与XP 软件工程包括下列领域:软件需求 ...
- 如何查看JSP和Servlet版本
我们在java web开发的过程中,有时在资料上可能会提到环境所要支持的JSP,Servlet版本.如果版本低就可能出现测试错误. 方法:打开tomcat的common/lib 目录下,有两个JAR文 ...
- graph | hungary
匈牙利算法,求二分图最大匹配. 若P是图G中一条连通两个未匹配顶点的路径,并且属于M的边和不属于M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径.(M为一个匹配) 由增广路 ...