CForm
鍖 | system.web.form |
---|---|
缁ф壙 | class CForm » CFormElement » CComponent |
瀹炵幇 | ArrayAccess |
婧愯嚜 | 1.1 |
鐗堟湰 | $Id: CForm.php 3426 2011-10-25 00:01:09Z alexander.makarow $ |
婧愮爜 | framework/web/form/CForm.php |
寮曞叆鎶借薄鐨勮〃鍗曞璞′富瑕佺洰鐨勬槸涓轰簡鎻愰珮琛ㄥ崟鐨勫彲閲嶇敤鎬с 鐗瑰埆鏄紝鎴戝彲浠ユ妸琛ㄥ崟鍒嗕负涓ら儴鍒嗭細 閭d簺鎸囧畾鐨勬瘡涓釜鍒殑琛ㄥ崟杈撳叆锛屽拰閭d簺瑁呴グ鐨勮〃鍗曡緭鍏ャ 涓涓狢Form瀵硅薄浠h〃鍓嶈咃紝瀹冧緷闈犳覆鏌撹繘绋嬫潵瀹屾垚琛ㄥ崟杈撳叆鍏冪礌鐨勮楗般 鍙噸鐢ㄦт富瑕佷綋鐜板湪娓叉煋鐨勮繃绋嬩腑銆 涔熷氨鏄锛屼竴涓覆鏌撹繃绋嬪彲浠ラ噸澶嶄娇鐢ㄦ潵鍛堢幇涓嶅悓鐨凜Form瀵硅薄銆
涓涓〃鍗曞彲浠ヤ互涓嶅悓鐨勬柟寮忔覆鏌撱備竴绉嶆槸鍙互璋冪敤render鏂规硶 鏉ュ揩閫熺殑娓叉煋涓涓〃鍗曢潰鏃犻渶缂栧啓浠讳綍鐨凥TML浠g爜銆 涓绉嶆槸瑕嗙洊render鏂规硶璋冪敤涓嶅悓甯冨眬鐨勬潵娓叉煋涓涓〃鍗 杩樺彲浠ユ槸浣跨敤涓涓閮ㄧ殑瑙嗗浘妯℃澘鏉ユ覆鏌撴瘡涓〃鍗曞厓绱犮 浠庤岋紝render鏂规硶鍙互搴旂敤浜庢墍鏈夊悇绫荤殑琛ㄥ崟锛屾潵杈惧埌鏈澶х殑鍙噸鐢ㄦс 澶栭儴鐨勮鍥炬ā鏉挎潵娓叉煋澶嶆潅鐨勮〃鍗曪紝鎿嶆寔浜嗘渶鍦ㄧ殑鐏垫椿鎬с
琛ㄥ崟鐨勮緭鍏ュ厓绱犱緷鎹〃鍗曡緭鍏ュ厓绱犵殑灞傜骇鏉ョ粍缁囥 鏍规湰鐨勫眰绾э紝鏄疌Form瀵硅薄锛 鏍硅〃鐢ㄤ袱涓泦鍚堟潵淇濇寔瀹冪殑瀛愬コ銆elements鍜buttons. 鍓嶈呭寘鍚簡闈炴寜閽殑琛ㄥ崟鍏冪礌(CFormStringElement, CFormInputElement鍜孋Form); 鍚庤呬富瑕佸寘鎷寜閽厓绱(CFormButtonElement).褰撲竴涓狢Form瀵硅薄宓屽叆鍒 elements闆嗗悎鏃讹紝瀹冭绉颁负涓涓瓙琛紝瀹冨彲浠ユ嫢鏈夊畠鑷繁鐨elements 鍜buttons涓や釜闆嗗悎浠庤屽舰鎴愭暣浣撶殑琛ㄥ崟灞傛銆
瀛愯〃涓昏鐢ㄤ簬澶勭悊澶氶噸妯″瀷锛屼緥濡傦紝 涓涓敤鎴锋敞鍐岃〃锛屾垜浠彲浠ョ敤鏍硅〃鏉ユ敹闆嗙敤鎴疯〃鐨勮緭鍏ャ 闈㈠瓙琛ㄦ敹闆嗕釜浜鸿祫鏂欑殑杈撳叆銆 瀛愯〃鏄竴涓緝濂界殑鏂瑰紡鏉ユ妸涓涓暱琛ㄥ垎鍓叉垚杈冪煭鐨勮〃銆 鍗充究鎵鏈夌殑杈撳叆閮藉睘浜庡悓涓涓ā鍨嬨
鎸夌収閰嶇疆鏁扮粍鍜岀粰瀹氱殑琛ㄥ崟瑙勬牸锛 鐢ㄦ潵鍒濆鍖栦竴涓狢Form瀵硅薄鐨勫睘鎬у笺 elements鍜buttons灞炴ч渶瑕佺壒鍒敞鎰忥紝 瀹冧滑鏄富瑕佽閰嶇疆鐨勫睘鎬с傞厤缃elements,鎴戜滑鐨勭粰瀹氭暟缁勫涓嬶細 the following:
'elements'=>array( 'username'=>array('type'=>'text', 'maxlength'=>80), 'password'=>array('type'=>'password', 'maxlength'=>80), )涓婇潰鐨勪唬鐮佹寚瀹氫簡涓や釜杈撳叆鍏冪礌: 'username'鍜'password'銆 娉ㄦ剰锛屾ā鍨嬪璞℃伆濂芥湁鍚屾牱鐨勫睘鎬'username'鍜'password'銆 姣忎釜琛ㄥ崟鍏冪礌鏈夊绉嶇被鍨嬪彲閫夋嫨浣跨敤銆 涓涓寚瀹氱殑杈撳叆鍏冪礌鏁扮粍涓殑鍏跺畠鍏冪礌(濡'maxlength')鏄綋杈撳叆鍏冪礌琚覆鏌撴椂娓叉煋鍒颁笂闈㈢殑HTML灞炴 buttons灞炴х殑閰嶇疆涔熺被浼艰繖涓
鎯充簡瑙f洿澶氬叧浜庤〃鍗曞厓绱犵殑璇︾粏淇℃伅锛 璇峰弬闃CFormInputElement鍜CFormButtonElement銆
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
action | mixed | 琛ㄥ崟action鐨刄RL (璇峰弬闃 CHtml::normalizeUrl鏉ヤ簡瑙f洿璇︾粏鐨勪俊鎭) 榛樿鏄竴涓┖鐨勫瓧绗︿覆锛屾剰鍛崇潃褰撳墠璇锋眰鐨刄RL銆 褰撹〃鍗曟槸涓涓瓙琛ㄥ崟鏃讹紝姝ゅ睘鎬т細琚拷鐣ャ | CForm |
activeForm | array | 鐢ㄤ簬鍒涘缓鍔犲己鍨嬭〃鍗曟寕浠剁殑閰嶇疆銆 杩欎釜鎸備欢灏嗙敤浜庢覆鏌撹〃鍗曞厓绱犲拰閿欒淇℃伅銆 'class'閫夐」鏄繀椤荤殑锛岀敤鏉ユ寚瀹氭寕浠剁殑绫汇 鍏跺畠鐨勯夐」灏嗕紶鍒CBaseController::beginWidget()鏂规硶銆 榛樿涓篴rray('class'=>'CActiveForm'). | CForm |
activeFormWidget | CActiveForm | 鍜岃繖涓〃鍗曟湁鍏崇殑鎸備欢銆倀he active form widget associated with this form. | CForm |
attributes | array | 琛ㄥ崟鏍囩鐨凥TML灞炴у笺傚綋涓涓〃鍗曡宓屽叆鍒板彟涓涓〃鍗曟椂, 杩欎釜灞炴у皢浼氱敤浜庢覆鏌揌TML灞炴у煎埌瀛愯〃鍗曘 | CForm |
buttonElementClass | string | 浠h〃涓涓〃鍗曟寜閽殑绫汇傞粯璁や负'CFormButtonElement'. | CForm |
buttons | CFormElementCollection | 杩斿洖琛ㄥ崟鐨勬寜閽厓绱犮 | CForm |
description | string | 琛ㄥ崟鐨勬弿杩般 | CForm |
elements | CFormElementCollection | 娓叉煋琛ㄥ崟鐨勮緭鍏ュ厓绱犮 | CForm |
inputElementClass | string | 浠h〃涓涓〃鍗曡緭鍏ュ厓绱犵殑绫汇傞粯璁や负'CFormInputElement'. | CForm |
method | string | 琛ㄥ崟鐨勬彁浜ゆ柟娉曘傞粯璁や负'post'銆 褰撹〃鍗曟槸涓涓瓙琛ㄥ崟鏃讹紝姝ゅ睘鎬т細琚拷鐣ャ | CForm |
model | CModel | 杩斿洖鍜岃繖涓〃鍗曟湁鍏崇殑妯″瀷 | CForm |
models | array | 杩斿洖鎵鏈夊拰杩欎釜琛ㄥ崟鏈夊叧鐨勬ā鍨嬫垨鑰呭瓙琛ㄥ崟銆 | CForm |
owner | CBaseController | 琛ㄥ崟鐨勬嫢鏈夎呫 鍙互寮曠敤涓涓帶鍒跺櫒鐨勫紩鐢ㄤ篃鍙互寮曠敤涓涓寕浠讹紝鍦ㄨ〃鍗曞垱寤哄拰娓叉煋鏃躲 | CForm |
parent | mixed | 杩欎釜鍏冪礌鐨勭湡绯荤埗绫汇傚畠鍙兘鏄CForm瀵硅薄锛屼篃鍙兘鏄CBaseController瀵硅薄銆 (鎺у埗鍣ㄦ垨鎸備欢)銆 | CFormElement |
root | CForm | 鏈楂橀樁灞傜殑琛ㄥ崟瀵硅薄 | CForm |
showErrorSummary | boolean | 鏄惁鏄剧ず閿欒鎽樿銆傞粯璁や负false銆 | CForm |
title | string | 琛ㄥ崟鐨勯鐩傞粯璁ゆ儏鍐典笅锛屽鏋滆缃簡杩欎釜锛 涓涓嚜瀹氫箟鐨勬帶浠跺彲鑳戒細琚覆鏌撳湪琛ㄥ崟鍐呭鐨勫懆鍥达紝浣跨敤棰樼洰浣滀负瀹冪殑璇存槑銆傞粯璁や负null銆 | CForm |
visible | boolean | 杩斿洖鍊艰鏄庤繖涓厓绱犳槸鍚﹀彲瑙佸苟闇瑕佹覆鏌撱 | CFormElement |
鍏叡鏂规硶
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
__call() | 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 | CComponent |
__construct() | 鏋勯犳柟娉曘 | CForm |
__get() | 杩斿洖灞炴у笺 | CFormElement |
__isset() | 妫鏌ヤ竴涓睘鎬ф槸鍚︿负null銆 | CComponent |
__set() | 璁剧疆灞炴у笺 | CFormElement |
__toString() | 灏嗗璞¤浆鎹负瀛楃涓层 | CFormElement |
__unset() | 璁剧疆涓涓粍浠剁殑灞炴т负null銆 | CComponent |
addedElement() | 涓涓厓绱犺娣诲姞鍒板厓绱犻泦鍚堝悗璇ユ柟娉曡璋冪敤銆 | CForm |
asa() | 杩斿洖杩欎釜鍚嶅瓧鐨勮涓哄璞° | CComponent |
attachBehavior() | 闄勫姞涓涓涓哄埌缁勪欢銆 | CComponent |
attachBehaviors() | 闄勫姞涓涓涓哄垪琛ㄥ埌缁勪欢銆 | CComponent |
attachEventHandler() | 涓轰簨浠堕檮鍔犱竴涓簨浠跺鐞嗙▼搴忋 | CComponent |
canGetProperty() | 纭畾灞炴ф槸鍚﹀彲璇汇 | CComponent |
canSetProperty() | 纭畾灞炴ф槸鍚﹀彲鍐欍 | CComponent |
clicked() | 杩斿洖涓涓兼潵琛ㄦ槑鏄惁鎸囧畾鐨勬寜閽鐐瑰嚮浜嗐 | CForm |
configure() | 鏍规嵁鍒濆鍖栫殑鍊兼潵閰嶇疆杩欎釜瀵硅薄銆 | CFormElement |
detachBehavior() | 浠庣粍浠朵腑鍒嗙涓涓涓恒 | CComponent |
detachBehaviors() | 浠庣粍浠朵腑鍒嗙鎵鏈夎涓恒 | CComponent |
detachEventHandler() | 鍒嗙涓涓瓨鍦ㄧ殑浜嬩欢澶勭悊绋嬪簭銆 | CComponent |
disableBehavior() | 绂佺敤涓涓檮鍔犺涓恒 | CComponent |
disableBehaviors() | 绂佺敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
enableBehavior() | 鍚敤涓涓檮鍔犺涓恒 | CComponent |
enableBehaviors() | 鍚敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
evaluateExpression() | 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 | CComponent |
getActiveFormWidget() | 杩斿洖鍜岃繖涓〃鍗曟湁鍏崇殑鎸備欢銆倀he active form widget associated with this form. 杩欎釜鏂规硶灏嗘寜鐓activeForm鎸備欢鏉ヨ繑鍥炰竴涓姞寮哄瀷鐨勮〃鍗曘 | CForm |
getButtons() | 杩斿洖琛ㄥ崟鐨勬寜閽厓绱犮 | CForm |
getElements() | 娓叉煋琛ㄥ崟鐨勮緭鍏ュ厓绱犮 | CForm |
getEventHandlers() | 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 | CComponent |
getModel() | 杩斿洖鍜岃繖涓〃鍗曟湁鍏崇殑妯″瀷 | CForm |
getModels() | 杩斿洖鎵鏈夊拰杩欎釜琛ㄥ崟鏈夊叧鐨勬ā鍨嬫垨鑰呭瓙琛ㄥ崟銆 | CForm |
getOwner() | 杩斿洖琛ㄥ崟鐨勬嫢鏈夎呫 鍙互寮曠敤涓涓帶鍒跺櫒鐨勫紩鐢ㄤ篃鍙互寮曠敤涓涓寕浠讹紝鍦ㄨ〃鍗曞垱寤哄拰娓叉煋鏃躲 | CForm |
getParent() | 杩斿洖杩欎釜鍏冪礌鐨勭湡绯荤埗绫汇傚畠鍙兘鏄CForm瀵硅薄锛屼篃鍙兘鏄CBaseController瀵硅薄銆 (鎺у埗鍣ㄦ垨鎸備欢)銆 | CFormElement |
getRoot() | 杩斿洖鏈楂橀樁灞傜殑琛ㄥ崟瀵硅薄 | CForm |
getVisible() | 杩斿洖鍊艰鏄庤繖涓厓绱犳槸鍚﹀彲瑙佸苟闇瑕佹覆鏌撱 | CFormElement |
hasEvent() | 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 | CComponent |
hasEventHandler() | 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 | CComponent |
hasProperty() | 纭畾灞炴ф槸鍚﹁瀹氫箟銆 | CComponent |
loadData() | 鍔犺浇鎻愪氦鐨勬暟鎹埌鐩稿叧鐨勮〃鍗曟ā鍨嬩腑銆 | CForm |
offsetExists() | 杩斿洖鍦ㄦ寚瀹氬亸绉婚噺涓婃槸鍚﹀瓨鍦ㄤ竴涓厓绱犮 | CForm |
offsetGet() | 杩斿洖鎸囧畾鍋忕Щ閲忎笂闈㈢殑鍏冪礌銆 | CForm |
offsetSet() | 鍦ㄦ寚瀹氬亸绉婚噺涓婅缃厓绱犮 | CForm |
offsetUnset() | 娉ㄩ攢鎸囧畾鍋忕Щ閲忎笂鐨勫厓绱犮 | CForm |
raiseEvent() | 鍙戣捣涓涓簨浠躲 | CComponent |
removedElement() | 涓涓厓绱犱粠鍏冪礌闆嗗悎涓鍒犻櫎鍚庤鏂规硶琚皟鐢ㄣ | CForm |
render() | 娓叉煋琛ㄥ崟銆 | CForm |
renderBegin() | 娓叉煋琛ㄥ崟鐨勫紑濮嬫爣绛俱 | CForm |
renderBody() | 娓叉煋琛ㄥ崟鐨勪富浣撱 | CForm |
renderButtons() | 娓叉煋琛ㄥ崟鐨buttons. | CForm |
renderElement() | 娓叉煋涓涓崟涓鐨勫厓绱狅紝瀹冨彲浠ユ槸涓涓緭鍏ュ厓绱狅紝涓涓瓙琛ㄥ崟锛屼竴涓瓧绗︿覆鎴栦竴涓寜閽 | CForm |
renderElements() | 娓叉煋杩欎釜琛ㄥ崟鐨elements銆 | CForm |
renderEnd() | 娓叉煋琛ㄥ崟鐨勭粨鏋滄爣绛俱 | CForm |
setButtons() | 閰嶇疆琛ㄥ崟鐨勬寜閽 | CForm |
setElements() | 閰嶇疆琛ㄥ崟鐨勮緭鍏ュ厓绱犮 | CForm |
setModel() | 璁剧疆鍜岃繖涓〃鍗曟湁鍏崇殑妯″瀷 | CForm |
setVisible() | 璁剧疆杩欎釜鍏冪礌鏄惁鍙骞堕渶瑕佹覆鏌撱 | CFormElement |
submitted() | 杩斿洖涓涓兼潵琛ㄦ槑鏄惁琛ㄥ桨琚彁浜や簡銆 | CForm |
validate() | 楠岃瘉涓庤繖涓〃鍗曠浉鍏崇殑妯″瀷銆 | CForm |
鍙椾繚鎶ゆ柟娉
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
evaluateVisible() | 璇勪及杩欎釜琛ㄥ崟鐨勫彲瑙佹с | CForm |
getUniqueId() | 杩斿洖褰撳墠椤佃繖涓〃鍗曠殑鍞竴鏍囪瘑绗︺ | CForm |
init() | 鍒濆鍖栬〃鍗曘 | CForm |
灞炴ц缁
琛ㄥ崟action鐨刄RL (璇峰弬闃 CHtml::normalizeUrl鏉ヤ簡瑙f洿璇︾粏鐨勪俊鎭) 榛樿鏄竴涓┖鐨勫瓧绗︿覆锛屾剰鍛崇潃褰撳墠璇锋眰鐨刄RL銆 褰撹〃鍗曟槸涓涓瓙琛ㄥ崟鏃讹紝姝ゅ睘鎬т細琚拷鐣ャ
鐢ㄤ簬鍒涘缓鍔犲己鍨嬭〃鍗曟寕浠剁殑閰嶇疆銆 杩欎釜鎸備欢灏嗙敤浜庢覆鏌撹〃鍗曞厓绱犲拰閿欒淇℃伅銆 'class'閫夐」鏄繀椤荤殑锛岀敤鏉ユ寚瀹氭寕浠剁殑绫汇 鍏跺畠鐨勯夐」灏嗕紶鍒CBaseController::beginWidget()鏂规硶銆 榛樿涓篴rray('class'=>'CActiveForm').
鍜岃繖涓〃鍗曟湁鍏崇殑鎸備欢銆倀he active form widget associated with this form. 杩欎釜鏂规硶灏嗘寜鐓activeForm鎸備欢鏉ヨ繑鍥炰竴涓姞寮哄瀷鐨勮〃鍗曘
琛ㄥ崟鏍囩鐨凥TML灞炴у笺傚綋涓涓〃鍗曡宓屽叆鍒板彟涓涓〃鍗曟椂, 杩欎釜灞炴у皢浼氱敤浜庢覆鏌揌TML灞炴у煎埌瀛愯〃鍗曘
浠h〃涓涓〃鍗曟寜閽殑绫汇傞粯璁や负'CFormButtonElement'.
杩斿洖琛ㄥ崟鐨勬寜閽厓绱犮 娉ㄦ剰锛岃繑鍥炵殑缁撴灉鏄竴涓CFormElementCollection瀵硅薄锛 鎰忓懗鐫浣犲彲浠ュ儚浣跨敤涓涓暟缁勯偅鏍蜂娇鐢ㄥ畠锛岃鍙傞槄CMap.
琛ㄥ崟鐨勬弿杩般
娓叉煋琛ㄥ崟鐨勮緭鍏ュ厓绱犮 瀹冨寘鎷枃鏈瓧绗︿覆锛岃緭鍏ュ厓绱犲拰瀛愯〃鍗曘 娉ㄦ剰杩斿洖鐨勬槸涓涓CFormElementCollection瀵硅薄锛 which 鎰忓懗鐫浣犲彲浠ュ儚浣跨敤涓涓暟缁勯偅鏍蜂娇鐢ㄥ畠銆傛洿澶氳缁嗘儏鍐佃鍙傞槄CMap.
浠h〃涓涓〃鍗曡緭鍏ュ厓绱犵殑绫汇傞粯璁や负'CFormInputElement'.
琛ㄥ崟鐨勬彁浜ゆ柟娉曘傞粯璁や负'post'銆 褰撹〃鍗曟槸涓涓瓙琛ㄥ崟鏃讹紝姝ゅ睘鎬т細琚拷鐣ャ
杩斿洖鍜岃繖涓〃鍗曟湁鍏崇殑妯″瀷
杩斿洖鎵鏈夊拰杩欎釜琛ㄥ崟鏈夊叧鐨勬ā鍨嬫垨鑰呭瓙琛ㄥ崟銆
琛ㄥ崟鐨勬嫢鏈夎呫 鍙互寮曠敤涓涓帶鍒跺櫒鐨勫紩鐢ㄤ篃鍙互寮曠敤涓涓寕浠讹紝鍦ㄨ〃鍗曞垱寤哄拰娓叉煋鏃躲
鏈楂橀樁灞傜殑琛ㄥ崟瀵硅薄
鏄惁鏄剧ず閿欒鎽樿銆傞粯璁や负false銆
琛ㄥ崟鐨勯鐩傞粯璁ゆ儏鍐典笅锛屽鏋滆缃簡杩欎釜锛 涓涓嚜瀹氫箟鐨勬帶浠跺彲鑳戒細琚覆鏌撳湪琛ㄥ崟鍐呭鐨勫懆鍥达紝浣跨敤棰樼洰浣滀负瀹冪殑璇存槑銆傞粯璁や负null銆
杩斿洖褰撳墠椤佃繖涓〃鍗曠殑鍞竴鏍囪瘑绗︺
鏂规硶璇︾粏
public void __construct(mixed $config, CModel $model=NULL, mixed $parent=NULL)
| ||
$config | mixed | 杩欎釜琛ㄥ崟鐨勯厤缃 瀹冨彲浠ユ槸涓涓厤缃暟缁勬垨鑰呮槸涓涓繑鍥為厤缃暟缁勭殑PHP鑴氭湰鏂囦欢鐨勫埆鍚嶃 閰嶇疆鏁扮粍鐢卞悕绉-鍊煎缁勬垚锛 鐢ㄤ簬鍒濆鍖栬繖涓〃鍗曠殑灞炴с |
$model | CModel | 杩欎釜琛ㄥ崟鐩稿叧鐨勬ā鍨嬪璞★紝濡傛灉鏄痭ull锛 鐖剁被鐨勬ā鍨嬫潵鏇夸唬銆 |
$parent | mixed | 杩欎釜琛ㄥ崟鐨勭洿绯荤埗绫汇傚畠鍙兘鏄竴涓CBaseController瀵硅薄锛 (涓涓帶鍒跺櫒鎴栦竴涓寕浠),鎴栬呬竴涓CForm瀵硅薄銆 濡傛灉鏄墠鑰咃紝鎰忓懗鐫琛ㄥ崟鏄竴涓《绾х殑琛ㄥ崟锛涘鏋滄槸鍚庤咃紝鎰忓懗鐫琛ㄥ崟鏄竴涓瓙琛ㄥ崟銆 |
public function __construct($config,$model=null,$parent=null)
{
$this->setModel($model);
if($parent===null)
$parent=Yii::app()->getController();
parent::__construct($config,$parent);
$this->init();
}
鏋勯犳柟娉曘 濡傛灉浣犺鐩栨鏂规硶锛岀‘淇濅綘娌℃湁淇敼鏂规硶鐨勭壒寰併 瑕佺‘淇濊皟鐢ㄧ埗绫荤殑瀹炵幇銆
public void addedElement(string $name, CFormElement $element, boolean $forButtons)
| ||
$name | string | 鍏冪礌鐨勫悕绉 |
$element | CFormElement | 鏂版坊鍔犵殑鍏冪礌 |
$forButtons | boolean | 鍏冪礌鏄惁娣诲姞鍒颁簡buttons闆嗗悎涓 濡傛灉鏄痜alse锛屾剰鍛崇潃涓涓厓绱犳坊鍔犲埌浜elements闆嗗悎涓 |
public function addedElement($name,$element,$forButtons)
{
}
涓涓厓绱犺娣诲姞鍒板厓绱犻泦鍚堝悗璇ユ柟娉曡璋冪敤銆
public boolean clicked(string $name)
| ||
$name | string | 鎸夐挳鍚嶇О |
{return} | boolean | 鎸夐挳鏄惁琚偣鍑讳簡 |
public function clicked($name)
{
if(strcasecmp($this->getRoot()->method,'get'))
return isset($_POST[$name]);
else
return isset($_GET[$name]);
}
杩斿洖涓涓兼潵琛ㄦ槑鏄惁鎸囧畾鐨勬寜閽鐐瑰嚮浜嗐
protected boolean evaluateVisible()
| ||
{return} | boolean | 琛ㄥ崟鏄惁鍙 |
protected function evaluateVisible()
{
foreach($this->getElements() as $element)
if($element->getVisible())
return true;
return false;
}
璇勪及杩欎釜琛ㄥ崟鐨勫彲瑙佹с 杩欎釜鏂规硶灏嗘鏌elements鐨勫彲瑙佹с 濡傛灉鏈変换鎰忎竴涓槸鍙鐨勶紝琛ㄥ崟灏辫璁や负鏄彲瑙佺殑锛屽惁鍒欙紝涓嶅彲瑙併
public CActiveForm getActiveFormWidget()
| ||
{return} | CActiveForm | 鍜岃繖涓〃鍗曟湁鍏崇殑鎸備欢銆倀he active form widget associated with this form. 杩欎釜鏂规硶灏嗘寜鐓activeForm鎸備欢鏉ヨ繑鍥炰竴涓姞寮哄瀷鐨勮〃鍗曘 |
public function getActiveFormWidget()
{
if($this->_activeForm!==null)
return $this->_activeForm;
else
return $this->getRoot()->_activeForm;
}
public CFormElementCollection getButtons()
| ||
{return} | CFormElementCollection | 琛ㄥ崟鍏冪礌 |
public function getButtons()
{
if($this->_buttons===null)
$this->_buttons=new CFormElementCollection($this,true);
return $this->_buttons;
}
杩斿洖琛ㄥ崟鐨勬寜閽厓绱犮 娉ㄦ剰锛岃繑鍥炵殑缁撴灉鏄竴涓CFormElementCollection瀵硅薄锛 鎰忓懗鐫浣犲彲浠ュ儚浣跨敤涓涓暟缁勯偅鏍蜂娇鐢ㄥ畠锛岃鍙傞槄CMap.
public CFormElementCollection getElements()
| ||
{return} | CFormElementCollection | 琛ㄥ崟鍏冪礌銆 |
public function getElements()
{
if($this->_elements===null)
$this->_elements=new CFormElementCollection($this,false);
return $this->_elements;
}
娓叉煋琛ㄥ崟鐨勮緭鍏ュ厓绱犮 瀹冨寘鎷枃鏈瓧绗︿覆锛岃緭鍏ュ厓绱犲拰瀛愯〃鍗曘 娉ㄦ剰杩斿洖鐨勬槸涓涓CFormElementCollection瀵硅薄锛 which 鎰忓懗鐫浣犲彲浠ュ儚浣跨敤涓涓暟缁勯偅鏍蜂娇鐢ㄥ畠銆傛洿澶氳缁嗘儏鍐佃鍙傞槄CMap.
public CModel getModel(boolean $checkParent=true)
| ||
$checkParent | boolean | 濡傛灉琛ㄥ崟娌℃湁鏈韩鐨勬ā鍨嬶紝鏄惁杩斿洖鐖剁被鐨勬ā鍨 |
{return} | CModel | 鍜岃繖涓〃鍗曟湁鍏崇殑妯″瀷銆傚鏋滆〃鍗曟病鏈変竴涓ā鍨嬶紝 灏嗗湪瀹冪殑绁栧厛涓煡鎵俱 |
public function getModel($checkParent=true)
{
if(!$checkParent)
return $this->_model;
$form=$this;
while($form->_model===null && $form->getParent() instanceof self)
$form=$form->getParent();
return $form->_model;
}
杩斿洖鍜岃繖涓〃鍗曟湁鍏崇殑妯″瀷
public array getModels()
| ||
{return} | array | 杩斿洖鎵鏈夊拰杩欎釜琛ㄥ崟鏈夊叧鐨勬ā鍨嬫垨鑰呭瓙琛ㄥ崟銆 |
public function getModels()
{
$models=array();
if($this->_model!==null)
$models[]=$this->_model;
foreach($this->getElements() as $element)
{
if($element instanceof self)
$models=array_merge($models,$element->getModels());
}
return $models;
}
杩斿洖鎵鏈夊拰杩欎釜琛ㄥ崟鏈夊叧鐨勬ā鍨嬫垨鑰呭瓙琛ㄥ崟銆
public CBaseController getOwner()
| ||
{return} | CBaseController | 琛ㄥ崟鐨勬嫢鏈夎呫 鍙互寮曠敤涓涓帶鍒跺櫒鐨勫紩鐢ㄤ篃鍙互寮曠敤涓涓寕浠讹紝鍦ㄨ〃鍗曞垱寤哄拰娓叉煋鏃躲 |
public function getOwner()
{
$owner=$this->getParent();
while($owner instanceof self)
$owner=$owner->getParent();
return $owner;
}
public CForm getRoot()
| ||
{return} | CForm | 鏈楂橀樁灞傜殑琛ㄥ崟瀵硅薄 |
public function getRoot()
{
$root=$this;
while($root->getParent() instanceof self)
$root=$root->getParent();
return $root;
}
protected string getUniqueId()
| ||
{return} | string | 琛ㄥ崟鐨勫敮涓鏍囪瘑绗 |
protected function getUniqueId()
{
if(isset($this->attributes['id']))
return 'yform_'.$this->attributes['id'];
else
return 'yform_'.sprintf('%x',crc32(serialize(array_keys($this->getElements()->toArray()))));
}
杩斿洖褰撳墠椤佃繖涓〃鍗曠殑鍞竴鏍囪瘑绗︺
protected void init()
|
鍒濆鍖栬〃鍗曘 杩欎釜鏂规硶鍦ㄦ瀯閫犲櫒涓璋冪敤銆 浣犲彲蹇冭鐩栨鏂规硶鏉ヨ嚜瀹氫箟鍒濆鍖 (姣斿閰嶇疆琛ㄥ崟瀵硅薄).
public void loadData()
|
public function loadData()
{
if($this->_model!==null)
{
$class=get_class($this->_model);
if(strcasecmp($this->getRoot()->method,'get'))
{
if(isset($_POST[$class]))
$this->_model->setAttributes($_POST[$class]);
}
else if(isset($_GET[$class]))
$this->_model->setAttributes($_GET[$class]);
}
foreach($this->getElements() as $element)
{
if($element instanceof self)
$element->loadData();
}
}
鍔犺浇鎻愪氦鐨勬暟鎹埌鐩稿叧鐨勮〃鍗曟ā鍨嬩腑銆 杩欎釜鏂规硶灏嗙┛杩囨墍鏈夊拰杩欎釜琛ㄥ崟鐩稿叧鐨勬ā鍨嬪拰瀛愯〃鍗曘 澶ч噺鐨勬寚娲炬彁浜ょ殑鏁版嵁鍒版ā鍨嬩腑銆
鍙傝
public boolean offsetExists(mixed $offset)
| ||
$offset | mixed | 鎸囧畾鐨勫亸绉婚噺 |
{return} | boolean |
public function offsetExists($offset)
{
return $this->getElements()->contains($offset);
}
杩斿洖鍦ㄦ寚瀹氬亸绉婚噺涓婃槸鍚﹀瓨鍦ㄤ竴涓厓绱犮 璇ユ柟娉曟槸ArrayAccess鎺ュ彛鎵蹇呴』鐨勩
public mixed offsetGet(integer $offset)
| ||
$offset | integer | 鎸囧畾鐨勫亸绉婚噺 |
{return} | mixed | 鍦ㄦ寚瀹氬亸绉婚噺涓婇潰鐨勫厓绱狅紝濡傛灉鍦ㄦ寚瀹氬亸绉婚噺涓婃湭鎵惧埌鍏冪礌鍒欒繑鍥瀗ull銆 |
public function offsetGet($offset)
{
return $this->getElements()->itemAt($offset);
}
杩斿洖鎸囧畾鍋忕Щ閲忎笂闈㈢殑鍏冪礌銆 璇ユ柟娉曟槸ArrayAccess鎺ュ彛鎵蹇呴』鐨勩
public void offsetSet(integer $offset, mixed $item)
| ||
$offset | integer | 鎸囧畾鐨勫亸绉婚噺 |
$item | mixed | 鍏冪礌鐨勫 |
public function offsetSet($offset,$item)
{
$this->getElements()->add($offset,$item);
}
鍦ㄦ寚瀹氬亸绉婚噺涓婅缃厓绱犮 璇ユ柟娉曟槸ArrayAccess鎺ュ彛鎵蹇呴』鐨勩
public void offsetUnset(mixed $offset)
| ||
$offset | mixed | 鎸囧畾鐨勫亸绉婚噺 |
public function offsetUnset($offset)
{
$this->getElements()->remove($offset);
}
娉ㄩ攢鎸囧畾鍋忕Щ閲忎笂鐨勫厓绱犮 璇ユ柟娉曟槸ArrayAccess鎺ュ彛鎵蹇呴』鐨勩
public void removedElement(string $name, CFormElement $element, boolean $forButtons)
| ||
$name | string | 鍏冪礌鐨勫悕绉 |
$element | CFormElement | 琚垹闄ょ殑鍏冪礌 |
$forButtons | boolean | 鍏冪礌鏄惁浠buttons闆嗗悎涓垹闄 濡傛灉鏄痜alse锛屾剰鍛崇潃鍏冪礌浠elements闆嗗悎涓垹闄や簡銆 |
public function removedElement($name,$element,$forButtons)
{
}
涓涓厓绱犱粠鍏冪礌闆嗗悎涓鍒犻櫎鍚庤鏂规硶琚皟鐢ㄣ
public string render()
| ||
{return} | string | 娓叉煋缁撴灉 |
public function render()
{
return $this->renderBegin() . $this->renderBody() . $this->renderEnd();
}
娓叉煋琛ㄥ崟銆 榛樿浠呮槸璋冪敤renderBegin, renderBody鍜renderEnd銆
public string renderBegin()
| ||
{return} | string | 娓叉煋缁撴灉 |
public function renderBegin()
{
if($this->getParent() instanceof self)
return '';
else
{
$options=$this->activeForm;
if(isset($options['class']))
{
$class=$options['class'];
unset($options['class']);
}
else
$class='CActiveForm';
$options['action']=$this->action;
$options['method']=$this->method;
if(isset($options['htmlOptions']))
{
foreach($this->attributes as $name=>$value)
$options['htmlOptions'][$name]=$value;
}
else
$options['htmlOptions']=$this->attributes;
ob_start();
$this->_activeForm=$this->getOwner()->beginWidget($class, $options);
return ob_get_clean() . "<div style=\"visibility:hidden\">".CHtml::hiddenField($this->getUniqueID(),1)."</div>\n";
}
}
娓叉煋琛ㄥ崟鐨勫紑濮嬫爣绛俱 榛樿鏄覆鏌撹〃鍗曠殑寮濮嬫爣绛俱
public string renderBody()
| ||
{return} | string | 娓叉煋缁撴灉 |
public function renderBody()
{
$output='';
if($this->title!==null)
{
if($this->getParent() instanceof self)
{
$attributes=$this->attributes;
unset($attributes['name'],$attributes['type']);
$output=CHtml::openTag('fieldset', $attributes)."<legend>".$this->title."</legend>\n";
}
else
$output="<fieldset>\n<legend>".$this->title."</legend>\n";
}
if($this->description!==null)
$output.="<div class=\"description\">\n".$this->description."</div>\n";
if($this->showErrorSummary && ($model=$this->getModel(false))!==null)
$output.=$this->getActiveFormWidget()->errorSummary($model)."\n";
$output.=$this->renderElements()."\n".$this->renderButtons()."\n";
if($this->title!==null)
$output.="</fieldset>\n";
return $output;
}
娓叉煋琛ㄥ崟鐨勪富浣撱 杩欎釜鏂规硶涓昏娓叉煋elements鍜buttons銆 濡傛灉title鎴description琚寚瀹氾紝瀹冧滑鍚屾牱浼氳娓叉煋銆 濡傛灉鍏宠仈妯″瀷鍖呭惈閿欒锛岄敊璇憳瑕佷細鏄剧ず銆 琛ㄥ崟鏍囩灏嗕笉浼氳娓叉煋銆 璇疯皟鐢renderBegin鍜renderEnd鏉ユ覆鏌撹〃鍗曠殑寮濮嬪拰缁撴潫鏍囩銆 浣犲彲浠ヨ鐩栬繖涓柟娉曟潵鑷畾涔夎〃鍗曠殑娓叉煋銆
public string renderButtons()
| ||
{return} | string | 娓叉煋鐨勭粨鏋 |
public function renderButtons()
{
$output='';
foreach($this->getButtons() as $button)
$output.=$this->renderElement($button);
return $output!=='' ? "<div class=\"row buttons\">".$output."</div>\n" : '';
}
娓叉煋琛ㄥ崟鐨buttons.
public string renderElement(mixed $element)
| ||
$element | mixed | 瑕佽娓叉煋鐨勮〃鍗曞厓绱狅紝瀹冨彲浠ユ槸涓涓CFormElement瀹炰緥锛 涔熷彲浠ユ槸涓涓唬琛ㄨ〃鍗曞厓绱犵殑瀛楃涓层 |
{return} | string | 娓叉煋鐨勭粨鏋 |
public function renderElement($element)
{
if(is_string($element))
{
if(($e=$this[$element])===null && ($e=$this->getButtons()->itemAt($element))===null)
return $element;
else
$element=$e;
}
if($element->getVisible())
{
if($element instanceof CFormInputElement)
{
if($element->type==='hidden')
return "<div style=\"visibility:hidden\">\n".$element->render()."</div>\n";
else
return "<div class=\"row field_{$element->name}\">\n".$element->render()."</div>\n";
}
else if($element instanceof CFormButtonElement)
return $element->render()."\n";
else
return $element->render();
}
return '';
}
娓叉煋涓涓崟涓鐨勫厓绱狅紝瀹冨彲浠ユ槸涓涓緭鍏ュ厓绱狅紝涓涓瓙琛ㄥ崟锛屼竴涓瓧绗︿覆鎴栦竴涓寜閽
public string renderElements()
| ||
{return} | string | 娓叉煋鐨勭粨鏋 |
public function renderElements()
{
$output='';
foreach($this->getElements() as $element)
$output.=$this->renderElement($element);
return $output;
}
娓叉煋杩欎釜琛ㄥ崟鐨elements銆
public string renderEnd()
| ||
{return} | string | 娓叉煋缁撴灉 |
public function renderEnd()
{
if($this->getParent() instanceof self)
return '';
else
{
ob_start();
$this->getOwner()->endWidget();
return ob_get_clean();
}
}
娓叉煋琛ㄥ崟鐨勭粨鏋滄爣绛俱
public void setButtons(array $buttons)
| ||
$buttons | array | 鎸夐挳鐨勯厤缃 |
public function setButtons($buttons)
{
$collection=$this->getButtons();
foreach($buttons as $name=>$config)
$collection->add($name,$config);
}
閰嶇疆琛ㄥ崟鐨勬寜閽 閰嶇疆蹇呴』鏄竴涓互鎸夐挳鍚嶄负绱㈠紩鐨勬寜閽厤缃暟缁勩 姣忎釜鎸夐挳鐨勯厤缃敱鍚嶇О-鍊煎缁勬垚锛 鐢ㄤ簬鍒濆鍖栦竴涓CFormButtonElement瀵硅薄銆
public void setElements(array $elements)
| ||
$elements | array | 鎸夐挳鐨勯厤缃 |
public function setElements($elements)
{
$collection=$this->getElements();
foreach($elements as $name=>$config)
$collection->add($name,$config);
}
閰嶇疆琛ㄥ崟鐨勮緭鍏ュ厓绱犮 閰嶇疆蹇呴』鏄互杈撳叆鍏冪礌鍚嶇О涓虹储寮曠殑杈撳叆鍏冪礌閰嶇疆鏁扮粍銆 姣忎釜杈撳叆鍏冪礌鏁扮粍鐢卞悕绉-鍊煎缁勬垚锛 鐢ㄤ簬鍒濆鍖栦竴涓CFormStringElement瀵硅薄(褰'type'涓'string'鏃),涓涓CFormElement瀵硅薄 (褰'type'鏄互'Form'缁撳熬鐨勫瓧绗︿覆鏃), 鎴栬呬竴涓CFormInputElement瀵硅薄 鍦ㄦ墍鏈夊叾瀹冩儏鍐典笅銆
public void setModel(CModel $model)
| ||
$model | CModel | 鍜岃繖涓〃鍗曟湁鍏崇殑妯″瀷 |
public function setModel($model)
{
$this->_model=$model;
}
public boolean submitted(string $buttonName='submit', boolean $loadData=true)
| ||
$buttonName | string | 鎻愪氦鎸夐挳鐨勫悕绉 |
$loadData | boolean | 濡傛灉琛ㄥ崟琚彁浜ゆ槸鍚﹁皟鐢loadData 浠ヤ究鎻愪氦鐨勬暟鎹彲浠ヤ紶缁欑浉鍏崇殑妯″瀷 |
{return} | boolean | 琛ㄥ崟鏄惁琚彁浜や簡銆 |
public function submitted($buttonName='submit',$loadData=true)
{
$ret=$this->clicked($this->getUniqueId()) && $this->clicked($buttonName);
if($ret && $loadData)
$this->loadData();
return $ret;
}
杩斿洖涓涓兼潵琛ㄦ槑鏄惁琛ㄥ桨琚彁浜や簡銆
鍙傝
public boolean validate()
| ||
{return} | boolean | 鏄惁鎵鏈夌殑妯″瀷閮芥湁鏁 |
public function validate()
{
$ret=true;
foreach($this->getModels() as $model)
$ret=$model->validate() && $ret;
return $ret;
}
楠岃瘉涓庤繖涓〃鍗曠浉鍏崇殑妯″瀷銆 鎵鏈夌殑妯″瀷锛屽寘鎷拰閭d簺瀛愯〃鍗曠浉鍏崇殑锛 閮藉皢瀹岄獙璇侊紝浣犲彲浠ヤ娇鐢CModel::getErrors()鏉 妫绱㈤敊璇俊鎭