38. 后台模块开发(3)
1.在 Magento 中, 表单(form)可以被分为4个基本部分
1、 表单容器 => FORM Container
2、 表单 => FORM
3、 表单选项卡 => FORM Tabs
4、 真实的表单内容 => Actual Form Fields
public function newAction(){$this->loadLayout();$this->_addContent($this->getLayout()->createBlock('employee/adminhtml_employee_edit'))->_addLeft('employee/adminhtml_employee_edit_tabs');$this->renderLayout();}
这里可以直接看出我们在 content 和 left 区域里添加了两个 block, 主要的表单容器被加进了 content 区域,而表单选项卡被加进了 left 区域
2.表单容器
表单容器就是一个大的 div 框, 它包含了表单的所有元素和 html 代码, 为了创建一个容器, 你需要在 Block/Adminhtml/employee/ 文件下创一个 php 文件,并继承了 Mage_Adminhtml_Block_Widget_Form_Container 类我们就把文件名命为: Edit.php
<?phpclass Www_Employee_Block_Adminhtml_Employee_Edit extends Mage_Adminhtml_Block_Widget_Form_Container
{public function __construct(){parent::__construct();//这个变量被应用于表单的 URL 中, 它包含了表单实体的主键//拿删除按钮的 URL 来说: 模块/控制器/方法名/$this->_objectid/3$this->_objectId = 'id';//这两个变量比较重要,它们就是用来锁定表单选项卡(tabs)文件的,//其路径应该是 {$this->_blockGroup . '/' . $this->_controller . '_' . $this->_mode . '_form'},//当中的$this->mode含有默认值: 'edit', 那么展现出的路径是: 'employee/adminhtml_employee_edit_form'$this->_blockGroup = 'employee';$this->_controller = 'adminhtml_employee';//$this->_updateButton('save','label',Mage::helper('employee')->__('Save'));//$this->_updateButton('delete','label',Mage::helper('employee')->__('Delete'));//$this->removeButton('reset');$this->_addButton('saveandcontinue', array('label' => Mage::helper('adminhtml')->__('Save And Continue Edit'),'onclick' => 'saveAndContinueEdit()','class' => 'save',),-100);}//这个方法返回出我们想在表单头部展示出的标题, 在上图已用红色框出public function getHeaderText(){return Mage::helper('employee')->__('My Form Container');}
}
3.表单
这个 Block/Adminhtml/Employee/Edit/Form.php 文件包含真实的 <form> 标签, 代码如下:<?phpclass Www_Employee_Block_Adminhtml_Employee_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
{protected function _prepareForm(){$form = new Varien_Data_Form(array('id'=>'edit_form','action'=>$this->getUrl('*/*/save',array('id'=>$this->getRequest()->getParam('id'))),'method'=>'post','enctype'=>'multipart/form-data'));$form->setUseContainer(true);$this->setForm($form);return parent::_prepareForm();}
}
4.表单选项卡
<?phpclass Www_Employee_Block_Adminhtml_Employee_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs
{public function __construct(){$this->setId('employee_tabs');$this->setDestElementId('edit_form');$this->setTitle(Mage::helper('employee')->__('Employee Information'));return parent::__construct();}protected function _beforeToHtml(){$this->addTab('form_section', array('label' => Mage::helper('employee')->__('Information'),'title' => Mage::helper('employee')->__('Employee Information'),'content' => $this->getLayout()->createBlock('employee/adminhtml_employee_edit_tab_form')->toHtml(),));return parent::_beforeToHtml();}
}
5.真实的表单内容
<?phpclass Www_Employee_Block_Adminhtml_Employee_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form
{protected function _prepareForm(){$model = Mage::registry('web_data');$form = new Varien_Data_Form();$this->setForm($form);$fieldset = $form->addFieldset('employee_form', array('legend' => Mage::helper('employee')->__('Employee information')));$fieldset->addField('title', 'text', array('label' => Mage::helper('employee')->__('Title'),'class' => 'required-entry','required' => true,'name' => 'title',));$fieldset->addField('active', 'select', array('label' => Mage::helper('employee')->__('Enabled:'),'name' => 'active','class' => 'required-entry','required' => true,'values' => array(array('value' => 1,'label' => Mage::helper('employee')->__('Yes'),),array('value' => 0,'label' => Mage::helper('employee')->__('No'),),),));$form->setValues($model->getData());return parent::_prepareForm();}}
http://www.sunzhenghua.com/magento-admin-module-development-part3-grid-forms-tabs-updatebutton
38. 后台模块开发(3)相关推荐
- 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 ...
- 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后台管理系统模板,一直是在一个项目中开发.后来 ...
- Xposed模块开发指南
1.Xposed框架是什么? Xposed框架是一款开源框架,其功能是可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运行. ...
最新文章
- 快速检索并引用你在CSDN上所有的博文笔记
- 看到他我一下子就悟了-- Lambda表达式
- springboot抑制log中的info信息
- 中国35位“大国工匠”榜单出炉!西工大、西电合计占半壁江山!清华仅1人!...
- asp.net core监控—引入Prometheus(六)
- mysql 删掉重复数据
- Linux 死机了怎么办
- IOS 如何获取ppi
- 程序员如何勇敢说“不”!
- mysql慢查询原因_mysql 慢查询的原因分析点滴
- c语言实现克鲁斯卡尔算法,跪求C语言代码纠错,急~~~,克鲁斯卡尔算法
- 真正的卡巴斯基key 教你使用正版KASPERSKY授权到2008年
- 开启双重验证后无法登录Outlook桌面版的解决方法
- 【Java】运用泽勒一致性计算某天是星期几
- android 点击对话框按钮 不关闭按钮,Android在单击PositiveButton后不要关闭AlertDialog...
- 【論文筆記】MIDAS:Microcluster-Based Detector of Anomalies in Edge Streams
- kvm虚拟机上安装kata
- uniapp ios原生插件开发之插件包格式(package.json)
- 戴尔笔记本开机时卡在logo处底下小进度圈不动,进不了系统
- 《操作系统设计原理》第一章习题
热门文章
- forEach遍历对象数组案例
- C# 开发 Windows 服务 使用Log4net 组件 不能生成日志文件
- Oracle.start with … connect by [… and] prior…order siblings by …
- (转)javascript 从数组中删除指定值(不是指定位置)的元素
- asp.net MVC4, Ninject auto-mating
- C#中如何调用动态链接库DLL
- 网站防采集不防搜索引擎策略
- ASP.net 2.0 的 Membership Provider 与 Role Provider 第一部分——引进资源
- Python入门 第二节 作业一
- 匹配0-59 0-23 的正则表达式