41. 后台模块开发(6)
在这一章节里,我们将学习如何将 Grid 表正确的添加至后台表单选项卡所对应的 content 区块里这一章节只针对于对 Magento 有深刻了解的开发者,并已成功在后台选项卡所对应的 Content
区块里添加过 Grid 表,及有能力解决所碰到的问题
为了更好的讲解,我们来拿一个客户的需求当作实例,需求方案如下,建立一个实体叫’Customer Manager’,
随之分配一批客户给这个’Customer Manager’来管理,在后台页面,
我们需要能够从整个客户表里选择客户,然后保存或者关系到某一个指定的
Customer Manager。所以在’Customer Manager’编辑页面中要显示出一个完整
的客户 Grid 表, 这个表里会有 checkbox 列可以多选客户,
这个类似于在后台编辑商品页面里的 Related Products 和 Cross-sell Products
默认或者简单的操作方法是: 在 Tabs.php 文件里创建一个后台视窗,这里有个 addTab() 方法来定义我们想要添加的视窗路径(指: block 文件路径),代码如下:
$this->addTab('form_section', array('label' => Mage::helper('employee')->__('Sample Grid'),'title' => Mage::helper('employee')->__('Sample Grid'),'content' => $this->getLayout()->createBlock('employee/adminhtml_fav_edit_tab_grid')->toHtml(),));
这样一个 Grid 表会显示在新增选项卡(Tab)所对应的 Content 区块里, 但是在运行的时候会有许多问题产生。比如在搜索或分页的时候,和添加/删除条目有关操作的时候.
正确的操作方法
在 Tabs.php 中的 addTab() 方法应该如下:
$this->addTab('form_section5', array('label' => Mage::helper('employee')->__('Customers'),'title' => Mage::helper('employee')->__('Customers'),'url' => $this->getUrl('*/*/customer', array('_current' => true)),'class' => 'ajax',));
这样做的话,当你点击 Customers Tab, 它就会以 ajax 方式调用 url 加载,然后显示出 Grid 表
在我们的 controller 文件中, 添加 custoemrAction() 方法,代码如下:
public function customerAction(){$this->loadLayout();$this->getLayout()->getBlock('customer.grid')->setCustomers($this->getRequest()->getPost('customers', null));$this->renderLayout();}
这个操作十分简单, 只是简单的加载和输出 Layout, 所以还有段重要的代码应该写在该模块的 XML 文件里(在 Layout 文件夹下), 如下:
http://www.sunzhenghua.com/magento-admin-module-development-part6-internal-grid-forms-advanced
41. 后台模块开发(6)相关推荐
- ThinkPHP 3.2.3 简单后台模块开发(一)常用配置
一.项目分组 下载解压 ThinkPHP 3.2.3,在默认的应用 Application(./Application) 中,包含一个默认的模块 Home(./Application/Home). 需 ...
- 【Linux后台开发系列】Nginx源码从模块开发开始,不再对nginx源码陌生丨源码分析
Nginx源码从模块开发开始,不再对nginx源码发怵,值得学习,认真听完. 1. nginx的conf配置,cmd解析 2. nginx模块的八股文 3. nginx开发的细枝末节 [Linu ...
- 非遗在线商城小程序(后台PHP开发)
目 录 1绪论 1 1.1 选题及意义 1 1.2 国内外文献综述 2 1.3 研究的主要内容 3 2 系统工具 5 2.1 微信小程序 5 2.2 ThinkPHP 5 框架 7 2.3 RESTF ...
- discuz 后台页面开发
后台页面开发 创建项目 在 ./source/admincp/menu/ 目录下创建 menu_mynav.php 文件 在"管理中心-全局"中加一个项目,需要在 menu_myn ...
- 这可能是东半球最保姆级的后台服务器开发学习路线
作者 | 编程指北 来源 | 编程指北(id :cs_dev) 前言 这一篇的主题是「Linux C/C++ 服务器/后台开发学习路线」. 这样的文章相信大家都见得不少了,写之前也非常忐忑,能不能和其 ...
- Nginx 模块开发
Nginx 模块概述 Nginx 模块有三种角色: 处理请求并产生输出的 Handler 模块: 处理由 Handler 产生的输出的 Filter(滤波器)模块: 当出现多个后台服务器时,Load- ...
- Android开发之ApiCloud模块开发的注意事项
经过本人多次模块制作打包上传基本总结模块开发的以下坑: 一.模块开发SDK最小版本必须为9,不然就算你SDK模块开发完毕正常运行你在后台云编译也无法通过会报错,提示 minSdkVersion9小于你 ...
- 第11步 git推送失败 用户模块开发
别忘了git push **************************************************************************************** ...
- php magento 开发,magento 2模块开发实例helloworld模块 hello world 程序 c语言hello world代码 c语言hello worl...
data-id="1190000005008433" data-license="cc"> 1.在app/etc/config.php中添加自定义的模块( ...
- idea如何做到多模块开发项目
首先,推荐两个不错的后台系统模板,非常的不错,力荐. 1.码云地址:BootDo后台管理系统 2.码云地址:若依后台管理系统 因为之前一直在用BootDo后台管理系统模板,一直是在一个项目中开发.后来 ...
最新文章
- Python使用matplotlib可视化绘制并导出可视化结果图表到PDF文件中
- EXCEL实现时间戳格式和日期格互转
- flask使用debug模式时,存在错误时,会占用设备内存直至服务重启才释放;debug模式会开启一个守护进程(daemon process)...
- 2013豆瓣校园招聘研发类笔试题
- 内核控制Meta标签:让360浏览器默认使用极速模式打开网页(转)
- 体验共享——技术实现瓶颈与突破
- linux 获取命令行返回的数据_Linux | 活用CLI命令行进行数据处理与探索
- json for java
- Struts2之自定义转换器
- 【jQuery】JQuery-ui autocomplete与strtus2结合使用
- 台达EH3系列PLC进行MODBUS RTU通信的具体方法和步骤(非常详细)
- CAS单点登录原理分析(一)
- 学生课堂随机点名系统小结
- nbiot模块联网问题排查
- 01_搭建百度apollo环境实操可用
- 论文投稿指南——中文核心期刊推荐(计算机技术2)
- 古诗词的直译和韵译有什么区别?看看就知道了
- autojs脚本代码大全(实战演练2)
- 【统计方法】经验正交函数详解
- unity改变物体大小的两种方式