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)相关推荐

  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. discuz 后台页面开发

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

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

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

  5. Nginx 模块开发

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

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

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

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

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

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

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

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

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

  10. Xposed模块开发指南

    1.Xposed框架是什么? Xposed框架是一款开源框架,其功能是可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运行. ...

最新文章

  1. 快速检索并引用你在CSDN上所有的博文笔记
  2. 看到他我一下子就悟了-- Lambda表达式
  3. springboot抑制log中的info信息
  4. 中国35位“大国工匠”榜单出炉!西工大、西电合计占半壁江山!清华仅1人!...
  5. asp.net core监控—引入Prometheus(六)
  6. mysql 删掉重复数据
  7. Linux 死机了怎么办
  8. IOS 如何获取ppi
  9. 程序员如何勇敢说“不”!
  10. mysql慢查询原因_mysql 慢查询的原因分析点滴
  11. c语言实现克鲁斯卡尔算法,跪求C语言代码纠错,急~~~,克鲁斯卡尔算法
  12. 真正的卡巴斯基key 教你使用正版KASPERSKY授权到2008年
  13. 开启双重验证后无法登录Outlook桌面版的解决方法
  14. 【Java】运用泽勒一致性计算某天是星期几
  15. android 点击对话框按钮 不关闭按钮,Android在单击PositiveButton后不要关闭AlertDialog...
  16. 【論文筆記】MIDAS:Microcluster-Based Detector of Anomalies in Edge Streams
  17. kvm虚拟机上安装kata
  18. uniapp ios原生插件开发之插件包格式(package.json)
  19. 戴尔笔记本开机时卡在logo处底下小进度圈不动,进不了系统
  20. 《操作系统设计原理》第一章习题

热门文章

  1. forEach遍历对象数组案例
  2. C# 开发 Windows 服务 使用Log4net 组件 不能生成日志文件
  3. Oracle.start with … connect by [… and] prior…order siblings by …
  4. (转)javascript 从数组中删除指定值(不是指定位置)的元素
  5. asp.net MVC4, Ninject auto-mating
  6. C#中如何调用动态链接库DLL
  7. 网站防采集不防搜索引擎策略
  8. ASP.net 2.0 的 Membership Provider 与 Role Provider 第一部分——引进资源
  9. Python入门 第二节 作业一
  10. 匹配0-59 0-23 的正则表达式