yii_wiki_145_yii-cjuidialog-for-create-new-model (通过CJuiDialog来创建新的Model)

/****
CJuiDialog for create new model http://www.yiiframework.com/wiki/145/cjuidialog-for-create-new-model/translated by php攻城师http://blog.csdn.net/phpgcsIntroduction
Scenario
Preparation of the form
Enhance the action create
The dialog
Summary
***/Introduction 本教程关于如何 用一个对话框实现一个新建界面
这有点类似 使用 Ajax 链接来实现目的, 但是我们将会是哟你个一个更简单和更高效的方式:
表单的onSubmin 事件(the event onSubmit of the form)背景 Scenario 假设我们有一个很多学生的教室。 在没有创建教室的情况下, 如果用户想要填写学生信息的表单, 需要先创建一个教室 并且会丢失掉之前已经输入的学生信息。。。
我们想要允许用户从学生表单中创建教室,而不需要更改页面。准备表单  Preparation of the form 首先,我们要 一个创建教室的表单。 我们可以用 gii 来生成一个 crud 。。
在 普通提交的情况下,这个表单工作正常了以后, 我们可以将其用于一个 对话框。增强 创建动作 Enhance the action create 
我们需要 增强 创建教室的控制器动作, 如下:public function actionCreate(){$model=new Classroom;// Uncomment the following line if AJAX validation is needed// $this->performAjaxValidation($model);if(isset($_POST['Classroom'])){$model->attributes=$_POST['Classroom'];if($model->save()){if (Yii::app()->request->isAjaxRequest){echo CJSON::encode(array('status'=>'success', 'div'=>"Classroom successfully added"));exit;               }else$this->redirect(array('view','id'=>$model->id));}}if (Yii::app()->request->isAjaxRequest){echo CJSON::encode(array('status'=>'failure', 'div'=>$this->renderPartial('_form', array('model'=>$model), true)));exit;               }else$this->render('create',array('model'=>$model,));}我们做了一些小改动: 
在ajax 请求的情况下 我们写了一个 json 编码的数组。在这个数组中, 我们返回了一个状态 , 整个表单使用 renderPartial 来创建的。现在后台已经完成,我们来写对话框。<?php echo CHtml::link('Create classroom', "",  // the link for open the dialogarray('style'=>'cursor: pointer; text-decoration: underline;','onclick'=>"{addClassroom(); $('#dialogClassroom').dialog('open');}"));?><?php
$this->beginWidget('zii.widgets.jui.CJuiDialog', array( // the dialog'id'=>'dialogClassroom','options'=>array('title'=>'Create classroom','autoOpen'=>false,'modal'=>true,'width'=>550,'height'=>470,),
));?><div class="divForForm"></div><?php $this->endWidget();?><script type="text/javascript">
// here is the magic
function addClassroom()
{<?php echo CHtml::ajax(array('url'=>array('classroom/create'),'data'=> "js:$(this).serialize()",'type'=>'post','dataType'=>'json','success'=>"function(data){if (data.status == 'failure'){$('#dialogClassroom div.divForForm').html(data.div);// Here is the trick: on submit-> once again this function!$('#dialogClassroom div.divForForm form').submit(addClassroom);}else{$('#dialogClassroom div.divForForm').html(data.div);setTimeout(\"$('#dialogClassroom').dialog('close') \",3000);}} ",))?>;return false; }</script>就这些, 这些代码我都做了些什么?1, 一个链接,用来打开对话框
2, 对话框本身, 其中是一个 将会被 ajax 替代的 div
3, js 函数 addClassroom()
4, 这个函数出发了一个ajax 请求, 执行了我们在前面步骤中 准备的 create classroom 的动作。
5, 在 status failure 的情况下, 返回的 form 将会 在 对话框中在 status success 的情况下, 我们将 替换 div 并在3秒后 关闭对话框你还可以返回 新插入的 classroom 的 id ,并将其植入 一个下拉列表 并自动选中。总结:准备常规的 gii 生成的 creation 动作代码
修改 create 动作 ,增加 处理Ajax 请求的代码
在任何地方,你可以防止 link , dialog , js 代码此方法非常合适, 因为它changes anything in the code of the _form ,因此任何最终添加到 classroom 的 字段 都将在 标准的/对话框 的创建表单中 通用。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

真诚推荐几个最值得关注的前端公众号

前端技术日新月异&#xff0c;发展迅速&#xff0c;作为一个与时俱进的前端工程师&#xff0c;需要不断的学习。这里强烈推荐几个前端开发工程师必备的优质公众号&#xff0c;希望对你有所帮助。大家可以像我一样&#xff0c;利用碎片时间阅读这些公众号的文章。code秘密花园一…

Silverlight Unit Test Framework

微软在08年的时候推出了一个Silverlight的单元测试框架&#xff0c;该框架在Mix 08的时候与Silverlight controls同时推出的&#xff0c;微软工程师Jeff Wilcox一直参与维护该单元测试框架。Scott Gu对这个框架的介绍Jeff Wilcox提供的视频介绍该框架的源代码已经包括在Silverl…

Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

转载链接&#xff1a;http://freeloda.blog.51cto.com/2033581/1288553 大纲 一、前言 二、环境准备 三、安装与配置Nginx 四、Nginx之反向代理 五、Nginx之负载均衡 六、Nginx之页面缓存 七、Nginx之URL重写 八、Nginx之读写分离 注&#xff0c;操作系统为 CentOS 6.4 x86_64…

[Jobdu] 题目1499:项目安排

题目描述&#xff1a;小明每天都在开源社区上做项目&#xff0c;假设每天他都有很多项目可以选&#xff0c;其中每个项目都有一个开始时间和截止时间&#xff0c;假设做完每个项目后&#xff0c;拿到报酬都是不同的。由于小明马上就要硕士毕业了&#xff0c;面临着买房、买车、…

How to: Display a Gradient Fill

To display a gradient fill 第一步&#xff1a;In Visual Studio, create a Smart Device project. 第二部&#xff1a;Add the Gradientfill and GradientFilledButton classes to your project. public sealed class GradientFill{ // This method wraps the …

能在任意一种框架中复用的组件,太牛了!

Web Component 是一种 W3C标准支持的组件化方案&#xff0c;通过它可以编写可复用的组件&#xff0c;同时也可以对自己的组件做更精细化的控制。更牛的是&#xff0c;Web Component 可以在任何一种框架中使用&#xff0c;不用加载任何模块、代码量小&#xff0c;优势非常明显&a…

stm32cubemx中文_用 STM32 通用定时器做微秒延时函数(STM32CubeMX版本)

概述​ 在使用 DHT11 的时候&#xff0c;时序通信需要微秒来操作&#xff0c;STM32CubeMX 自带一个系统时钟&#xff0c;但是实现的是毫秒级别的。因此就自己用通用计时器实现一个。文章目录环境&#xff1a;开发板&#xff1a;STM32F4探索者&#xff08;正点原子&#xff09;1…

MySQL索引类型一览 让MySQL高效运行起来

转载链接&#xff1a;http://database.51cto.com/art/200910/156685.htm 索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。 在数据库表中&#xff0c;对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytabl…

431.chapter2.configure database mail

SQL Database Mail SQL 2005数据库邮件是一种通过 Microsoft SQL Server 2005 Database Engine 发送电子邮件的企业解决方案。通过使用数据库邮件&#xff0c;数据库应用程序可以向用户发送电子邮件。邮件中可以包含查询结果&#xff0c;还可以包含来自网络中任何资源的文件。数…

人脸识别拷勤门禁主板_捷易讲解AI无感人脸识别考勤门禁终端设备在使用中的维护方法...

人脸识别考勤门禁终端设备虽然在出厂时&#xff0c;都有做密封处理&#xff0c;但面对细小的灰尘&#xff0c;并没有做到百分百防尘。灰尘对于AI无感人脸识别考勤门禁终端设备是有一定的影响的&#xff0c;他会沉淀在主板上、屏幕上&#xff0c;影响设备散热和正常工作&#xf…

【翻译】How-To: Using the N* Stack, part 3

原文地址&#xff1a;http://jasondentler.com/blog/2009/08/how-to-using-the-n-stack-part-3/ Java – 一种代码松散的XML 在我们学习 Fluent NHibernate 之前, 应该先了解下老式的 NHibernate 映射文件应该是怎样写的。 在一个典型的 NHibernate 配置中&#xff0c;你会有很…

你可能需要的网易前端三轮面经

关注若川视野, 回复"pdf" 领取资料&#xff0c;回复"加群"&#xff0c;可加群长期交流前言最近一个星期面了几家公司&#xff0c;最后收获了心仪的网易有道offer&#xff0c;于是推掉了其他的面试&#xff0c;至于一些其他大厂&#xff0c;并没有投简历&am…

PHP yii 框架源码阅读(一)

转载链接&#xff1a;http://www.th7.cn/Program/php/2012/04/03/67983.shtml 目录文件 |- framework 框架核心库 |-|- base 底层类库文件夹&#xff0c;包 含CApplication(应用类&#xff0c;负责全局的用户请求处理&#xff0c;它管理的应用组件集&#xff0c;将提供特定功…

复习.net/c#时的小文章之万年草稿版 (全是基础概念,请懂的人绕行)

必读文&#xff1a;61条面向对象设计的经验原则&#xff08;体会篇&#xff09; C#知识点集合 (面试必备)一、显式(explicit)转换和隐式(implicit)转换的一般概念int i 100; Response.Write(i); // 这就是隐式 Response.Write(i.ToString()); // 这就是显式 一般来讲&#xff…

timertask run函数未执行_图执行模式下的 TensorFlow 2

文 / 李锡涵&#xff0c;Google Developers Expert本文节选自《简单粗暴 TensorFlow 2.0》尽管 TensorFlow 2 建议以即时执行模式(Eager Execution)作为主要执行模式&#xff0c;然而&#xff0c;图执行模式(Graph Execution)作为 TensorFlow 2 之前的主要执行模式&#xff0c…

AJAX自学笔记01

从今天开始正式系统学习asp.net ajax了。XMLHttpRequest对象属性&#xff1a;Number readyState (返回值4表示完成)Function onreadystatechange (执行回调函数)string responseText &#xff08;返回字符串型&#xff09;XMLDocument responseXML&#xff08;返回XML型&#x…

如何从 0 到 1 打造团队 PC/H5 构建工具

关注若川视野, 回复"pdf" 领取资料&#xff0c;回复"加群"&#xff0c;可加群长期交流学习一、前言 大家好&#xff0c;我叫鳗鱼&#xff0c;这次分享的主题是如何从 0 到 1 打造适合自己的构建部署方案。image.png先例行的自我介绍&#xff0c;大概 14 年…

PHP yii 框架源码阅读(二) - 整体执行流程分析

转载链接&#xff1a;http://tech.ddvip.com/2013-11/1384432766205970.html 一 程序入口 <?php// change the following paths if necessary $yiidirname(__FILE__)./http://www.cnblogs.com/framework/yii.php; $configdirname(__FILE__)./protected/config/main.php;/…

HTTP状态码大全

完整的 HTTP 1.1规范说明书来自于RFC 2616&#xff0c;你可以在http://www.talentdigger.cn/home/link.php?urld3d3LnJmYy1lZGl0b3Iub3JnLw%3D%3D在线查阅。HTTP 1.1的状态码被标记为新特性&#xff0c;因为许多浏览器只支持 HTTP 1.0。你应只把状态码发送给支持 HTTP 1.1的客…

testng接口自动化测试_Java+Maven+TestNG接口(API)自动化测试教程(10) 使用 Jenkins 构建自动化测试持续集成...

现在代码可以运行了&#xff0c;但是每次运行都需要我们手工去执行&#xff0c;并且测试报告也只能在执行测试的电脑上才能看到&#xff0c;我们希望能够定时自动执行测试&#xff0c;并且能够做到自动发送测试报告到相关人员的电子邮箱中。Jenkins 正好可以很好的完成以上诉求…