在这一章节里,我们将学习如何将 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)相关推荐

  1. ThinkPHP 3.2.3 简单后台模块开发(一)常用配置

    一.项目分组 下载解压 ThinkPHP 3.2.3,在默认的应用 Application(./Application) 中,包含一个默认的模块 Home(./Application/Home). 需 ...

  2. 【Linux后台开发系列】Nginx源码从模块开发开始,不再对nginx源码陌生丨源码分析

    Nginx源码从模块开发开始,不再对nginx源码发怵,值得学习,认真听完. 1.  nginx的conf配置,cmd解析 2.  nginx模块的八股文 3.  nginx开发的细枝末节 [Linu ...

  3. 非遗在线商城小程序(后台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 ...

  4. discuz 后台页面开发

    后台页面开发 创建项目 在 ./source/admincp/menu/ 目录下创建 menu_mynav.php 文件 在"管理中心-全局"中加一个项目,需要在 menu_myn ...

  5. 这可能是东半球最保姆级的后台服务器开发学习路线

    作者 | 编程指北 来源 | 编程指北(id :cs_dev) 前言 这一篇的主题是「Linux C/C++ 服务器/后台开发学习路线」. 这样的文章相信大家都见得不少了,写之前也非常忐忑,能不能和其 ...

  6. Nginx 模块开发

    Nginx 模块概述 Nginx 模块有三种角色: 处理请求并产生输出的 Handler 模块: 处理由 Handler 产生的输出的 Filter(滤波器)模块: 当出现多个后台服务器时,Load- ...

  7. Android开发之ApiCloud模块开发的注意事项

    经过本人多次模块制作打包上传基本总结模块开发的以下坑: 一.模块开发SDK最小版本必须为9,不然就算你SDK模块开发完毕正常运行你在后台云编译也无法通过会报错,提示 minSdkVersion9小于你 ...

  8. 第11步 git推送失败 用户模块开发

    别忘了git push **************************************************************************************** ...

  9. php magento 开发,magento 2模块开发实例helloworld模块 hello world 程序 c语言hello world代码 c语言hello worl...

    data-id="1190000005008433" data-license="cc"> 1.在app/etc/config.php中添加自定义的模块( ...

  10. idea如何做到多模块开发项目

    首先,推荐两个不错的后台系统模板,非常的不错,力荐. 1.码云地址:BootDo后台管理系统 2.码云地址:若依后台管理系统 因为之前一直在用BootDo后台管理系统模板,一直是在一个项目中开发.后来 ...

最新文章

  1. Python使用matplotlib可视化绘制并导出可视化结果图表到PDF文件中
  2. EXCEL实现时间戳格式和日期格互转
  3. flask使用debug模式时,存在错误时,会占用设备内存直至服务重启才释放;debug模式会开启一个守护进程(daemon process)...
  4. 2013豆瓣校园招聘研发类笔试题
  5. 内核控制Meta标签:让360浏览器默认使用极速模式打开网页(转)
  6. 体验共享——技术实现瓶颈与突破
  7. linux 获取命令行返回的数据_Linux | 活用CLI命令行进行数据处理与探索
  8. json for java
  9. Struts2之自定义转换器
  10. 【jQuery】JQuery-ui autocomplete与strtus2结合使用
  11. 台达EH3系列PLC进行MODBUS RTU通信的具体方法和步骤(非常详细)
  12. CAS单点登录原理分析(一)
  13. 学生课堂随机点名系统小结
  14. nbiot模块联网问题排查
  15. 01_搭建百度apollo环境实操可用
  16. 论文投稿指南——中文核心期刊推荐(计算机技术2)
  17. 古诗词的直译和韵译有什么区别?看看就知道了
  18. autojs脚本代码大全(实战演练2)
  19. 【统计方法】经验正交函数详解
  20. unity改变物体大小的两种方式

热门文章

  1. nodemcu http get无法使用IP的问题
  2. Android常用工具类 (转)
  3. 不输入密码执行sudo 命令
  4. 数据预处理中的缺失值问题
  5. k8s数据持久化实验
  6. android 代码实现back键功能
  7. Linux中常用命令(文件)
  8. JSP转译成Servlet详细过程
  9. Unsafe in Java
  10. Vue 系列二 之 猛龙行动之绝密代码