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.pswp.cn/news/276383.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276383.shtml
英文地址,請注明出處:http://en.pswp.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 正好可以很好的完成以上訴求…