1.修改 Grid 表中行的 URL

如果你想要详细定义 Grid 表中行的 URL, 比如,当用户点击 Grid 表中的任意一行,它将跳转到指定的页面,可以添加如下方法到 Grid.php 文件中

public function getRowUrl($row){return $this->getUrl('*/*/edit', array('id' => $row->getData('web_id')));}
URL 就是你 controller 中的 editAction 方法,它将行的 web_id 号作为参数进行传递

2 . 列_下拉框 – Drop Down Column Type

假设,你想要在 Grid 表中添加一个下拉框,比如你想要添加如下图片中显示的:

$this->addColumn('dropdown1',array('header'=>Mage::helper('employee')->__('Description'),'align'=>'left','index'=>'status','type'=>'options','width'=>'20px','options'=>array('0'=>'disable','1'=>'enable'),));

3.批量操作 – Mass Actions

批量操作功能十分有用,并且使用频率也非常高, 下图所展示的就是批量操作

 // 批量操作protected function _prepareMassaction(){$this->setMassactionIdField('employee_id'); //设置 form id$a = $this->getMassactionBlock();$a->setFormFieldName('employee123'); // 设置 post 表单 接收时,也用这个字段$this->getMassactionBlock()->addItem('delete', array('label'    =>   Mage::helper('employee')->__('Delete'),'url'      =>   $this->getUrl('*/*/massDelete'),  //给 URL 指定了一个方法'confirm'  =>    Mage::helper('employee')->__('Are you sure?'), //这个就是在提交前的 confirm 提示框效果,做再次确认));$statuses = Mage::getSingleton('employee/status')->getOptionArray();//array_unshift($statuses, array('label'=>'', 'value'=>''));$this->getMassactionBlock()->addItem('status', array('label' => Mage::helper('employee')->__('Change status'),'url'   => $this->getUrl('*/*/massStatus', array('_current'=>true)),'additional' => array('visibility'    =>  array('name'   =>  'status','type'   =>  'select','class'  =>  'required-entry','label'  =>  Mage::helper('employee')->__('Status'),'values' =>  $statuses))));return $this;}
控制器中:
public function massDeleteAction() {$ids = $this->getRequest()->getParam('employee123');if(!is_array($ids)) {Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));} else {try {foreach ($ids as $id) {$employee = Mage::getModel('employee/web')->load($id);$employee->delete();}Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Total of %d record(s) were successfully deleted', count($ids)));} catch (Exception $e) {Mage::getSingleton('adminhtml/session')->addError($e->getMessage());}}$this->_redirect('*/*/index');}

4.如果想你在 Grid 表中添加 导入/导出 选项,如下图所展示:

我们只需要将这两行代码添加至 _prepareColumns() 方法中

// 增加导入导出功能$this->addExportType('*/*/exportCsv', Mage::helper('employee')->__('CSV'));$this->addExportType('*/*/exportXml', Mage::helper('employee')->__('XML'));

同样你需要在 controller 中为此添加对应的方法

public function exportCsvAction(){$fileName = 'employee.csv';$grid  = $this->getLayout()->createBlock('employee/adminhtml_employee_grid');$this->_prepareDownloadResponse($fileName, $grid->getCsvFile());}public function exportXmlAction(){$fileName = 'employee.xml';$grid  = $this->getLayout()->createBlock('employee/adminhtml_employee_grid');$this->_prepareDownloadResponse($fileName, $grid->getXml());}

5.Grid 表 ==> 列中的搜索和过滤 – Custom Search/Filter For a Column

Grid 表中有那么单独一列,你希望搜索功能以不同的方式工作。例如它的 collection 是多表联查的集合,对于列的索引,你希望搜索功能工作起来不同或完全不工作你需要在 Grid.php 中重写这个 protected 方法 _addColumnFilterToCollection($column):
自定义过滤逻辑:protected function _addColumnFilterToCollection($column)
{if ($this->getCollection()) {if ($column->getId() == 'websites') {$this->getCollection()->joinField('websites','catalog/product_website','website_id','product_id=entity_id',null,'left');}}return parent::_addColumnFilterToCollection($column);
}

6.基于 Ajax 的 Grid
在你 Grid 中, 如果你希望 搜索/分页 和其他一些操作都是基于 Ajax 工作,那么你就要在你的 Grid.php 文件中的 __construct() 方法中添加:

$this->setSaveParametersInSession(true);
$this->setUseAjax(true);

并同时添加另外一个方法:

public function getGridUrl()
{return $this->getUrl('*/*/grid', array('_current'=>true));
}

这个 URL 将会被称作 Ajax 请求,为了获得 Grid 的内容,你需要在 EmployeeContrller.php 文件中添加:

public function gridAction()
{$this->loadLayout();$this->getResponse()->setBody($this->getLayout()->createBlock('employee/adminhtml_employee_grid')->toHtml());
}

7.在 Grid 中添加不同的按钮

在默认的 Grid 表中,你只有一个 “Add” 按钮,就像我们所演示的 “Add Employee”,如果你需要添加多个按钮时,如下图:

真的要做到,那么我们需要修改 Excellence/Employee/Block/Adminhtml/Employee.php 文件中的 __construct() 方法:
public function __construct()
{$this->_controller = 'adminhtml_employee';$this->_blockGroup = 'employee';$this->_headerText = Mage::helper('employee')->__('Employee Manager');$this->_addButtonLabel = Mage::helper('employee')->__('Add Employee');$this->_addButton('button1', array('label'     => Mage::helper('employee')->__('Button Label1'),'onclick'   => 'setLocation(\'' . $this->getUrl('*/*/button1') .'\')','class'     => 'add',));$this->_addButton('button2', array('label'     => Mage::helper('employee')->__('Button Label2'),'onclick'   => 'setLocation(\'' . $this->getUrl('*/*/button2') .'\')','class'     => 'remove',));parent::__construct();
}

8.改变默认分页的 Size

你需要在 Grid.php 文件中重写 _preparePage() 这个方法,

protected function _preparePage()
{$this->getCollection()->setPageSize($this->getParam($this->getVarNameLimit(), $this->_defaultLimit));$this->getCollection()->setCurPage($this->getParam($this->getVarNamePage(), $this->_defaultPage));
}
现在你可以根据你自己的需要设置 $this->_defaultLimit 和 $this->_defaultPage

9.为 Grid 表中的行添加不同的选项

如图所示:

$this->addColumn('action',array('header'   =>   Mage::helper('employee')->__('Action'),'type'     =>   'action','getter'   =>   'getWebId','actions'  =>   array(array('caption' =>  Mage::helper('employee')->__('Edit'),'url'     =>  $this->getUrl("*/*/edit"),'field'   =>  'id'),array('caption' =>  Mage::helper('employee')->__('Delete'),'url'     =>  $this->getUrl("*/*/delete"),'field'   =>  'id')),'filter'      =>  false,'sortable'    =>  false));

http://www.sunzhenghua.com/magento-admin-module-development-part2-grid-forms-tabs-addbutton

35. 后台模块开发(2)相关推荐

  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. 应届生怎么走Linux下C++后台服务器开发路线,工作3-5年的知识体系

    1. 前言 给最近正在准备秋招的同学或者是想转行,目标岗位是C++后端开发工程师,这个岗位对开发者的要求也比较高,需要的基础知识非常多,刚刚开始准备的时候,感觉也是不知从何入手,现在经过了一段时间的学 ...

  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. Apache JMeter2.13 实战
  2. IEEE迎来首位华人主席,马里兰大学终身教授刘国瑞当选
  3. 算法导论之平摊分析(动态表)
  4. ROS知识: vanilla(香草) CMakeLists.txt 的语法
  5. 通用Login功能自动化测试
  6. jmeter mysql查询结果提取_Jmeter-从数据库中获取数据并作为变量使用
  7. navicat 结合快捷键 非常好用
  8. 基于Matlab----RSSI指纹定位技术性能仿真
  9. git遇到的问题解决方案
  10. as ssd测试软件得分分析,SSD性能评判:教你读懂利用AS SSD BenchMark测试SSD固态硬盘性能的参数-网络教程与技术 -亦是美网络...
  11. 科研软件宝藏公众号开通
  12. Inno Setup打包添加和去除管理员权限
  13. 灌木修剪机的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  14. Android性能优化系列篇(二):启动优化
  15. oracle 表数据删除后恢复还原
  16. Error:Execution failed for task ':app:compileDebugNdk'. Error: NDK integrat
  17. 2021年人工智能(AI)的五大发展方向
  18. html自动分列,文字的自动分列 flex 弹性盒子的一些使用方法
  19. Map集合中的entry是什么?
  20. 优必选科技眼中的AI机器人时代

热门文章

  1. ubuntu下手动安装php-amqp模块教程
  2. WampServer服务中MySQL无法正常启动解决方案
  3. Python开发Day07(学生选课)
  4. nginx——rewrite模块
  5. 转帖 一个很有用但不常用到的传值方法! http://topic.csdn.net/u/20070124/22/09d43606-4119-4407-bfa6-8b2890ffbac7.html...
  6. 一款脑洞大开的表格可视化神器
  7. 从大数据角度看你的信用借贷
  8. 5、SpringBoot+MyBaits+Maven+Idea+pagehelper分页插件
  9. python中in,not in,比较运算符,格式化输出,编码
  10. 令用EclipseJ2EE创建的Dynamic Web project目录结构与用MyEclipse创建的Web project一样