Yii Framework v1.1.10 绫诲弬鑰

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
CForm 浠h〃涓涓寘鍚寚瀹氳〃鍗曡緭鍏ョ殑琛ㄥ崟瀵硅薄銆

寮曞叆鎶借薄鐨勮〃鍗曞璞′富瑕佺洰鐨勬槸涓轰簡鎻愰珮琛ㄥ崟鐨勫彲閲嶇敤鎬с 鐗瑰埆鏄紝鎴戝彲浠ユ妸琛ㄥ崟鍒嗕负涓ら儴鍒嗭細 閭d簺鎸囧畾鐨勬瘡涓釜鍒殑琛ㄥ崟杈撳叆锛屽拰閭d簺瑁呴グ鐨勮〃鍗曡緭鍏ャ 涓涓狢Form瀵硅薄浠h〃鍓嶈咃紝瀹冧緷闈犳覆鏌撹繘绋嬫潵瀹屾垚琛ㄥ崟杈撳叆鍏冪礌鐨勮楗般 鍙噸鐢ㄦт富瑕佷綋鐜板湪娓叉煋鐨勮繃绋嬩腑銆 涔熷氨鏄锛屼竴涓覆鏌撹繃绋嬪彲浠ラ噸澶嶄娇鐢ㄦ潵鍛堢幇涓嶅悓鐨凜Form瀵硅薄銆

涓涓〃鍗曞彲浠ヤ互涓嶅悓鐨勬柟寮忔覆鏌撱備竴绉嶆槸鍙互璋冪敤render鏂规硶 鏉ュ揩閫熺殑娓叉煋涓涓〃鍗曢潰鏃犻渶缂栧啓浠讳綍鐨凥TML浠g爜銆 涓绉嶆槸瑕嗙洊render鏂规硶璋冪敤涓嶅悓甯冨眬鐨勬潵娓叉煋涓涓〃鍗 杩樺彲浠ユ槸浣跨敤涓涓閮ㄧ殑瑙嗗浘妯℃澘鏉ユ覆鏌撴瘡涓〃鍗曞厓绱犮 浠庤岋紝render鏂规硶鍙互搴旂敤浜庢墍鏈夊悇绫荤殑琛ㄥ崟锛屾潵杈惧埌鏈澶х殑鍙噸鐢ㄦс 澶栭儴鐨勮鍥炬ā鏉挎潵娓叉煋澶嶆潅鐨勮〃鍗曪紝鎿嶆寔浜嗘渶鍦ㄧ殑鐏垫椿鎬с

琛ㄥ崟鐨勮緭鍏ュ厓绱犱緷鎹〃鍗曡緭鍏ュ厓绱犵殑灞傜骇鏉ョ粍缁囥 鏍规湰鐨勫眰绾э紝鏄疌Form瀵硅薄锛 鏍硅〃鐢ㄤ袱涓泦鍚堟潵淇濇寔瀹冪殑瀛愬コ銆elementsbuttons. 鍓嶈呭寘鍚簡闈炴寜閽殑琛ㄥ崟鍏冪礌(CFormStringElement, CFormInputElement鍜孋Form); 鍚庤呬富瑕佸寘鎷寜閽厓绱(CFormButtonElement).褰撲竴涓狢Form瀵硅薄宓屽叆鍒 elements闆嗗悎鏃讹紝瀹冭绉颁负涓涓瓙琛紝瀹冨彲浠ユ嫢鏈夊畠鑷繁鐨elementsbuttons涓や釜闆嗗悎浠庤屽舰鎴愭暣浣撶殑琛ㄥ崟灞傛銆

瀛愯〃涓昏鐢ㄤ簬澶勭悊澶氶噸妯″瀷锛屼緥濡傦紝 涓涓敤鎴锋敞鍐岃〃锛屾垜浠彲浠ョ敤鏍硅〃鏉ユ敹闆嗙敤鎴疯〃鐨勮緭鍏ャ 闈㈠瓙琛ㄦ敹闆嗕釜浜鸿祫鏂欑殑杈撳叆銆 瀛愯〃鏄竴涓緝濂界殑鏂瑰紡鏉ユ妸涓涓暱琛ㄥ垎鍓叉垚杈冪煭鐨勮〃銆 鍗充究鎵鏈夌殑杈撳叆閮藉睘浜庡悓涓涓ā鍨嬨

鎸夌収閰嶇疆鏁扮粍鍜岀粰瀹氱殑琛ㄥ崟瑙勬牸锛 鐢ㄦ潵鍒濆鍖栦竴涓狢Form瀵硅薄鐨勫睘鎬у笺 elementsbuttons灞炴ч渶瑕佺壒鍒敞鎰忥紝 瀹冧滑鏄富瑕佽閰嶇疆鐨勫睘鎬с傞厤缃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洿澶氬叧浜庤〃鍗曞厓绱犵殑璇︾粏淇℃伅锛 璇峰弬闃CFormInputElementCFormButtonElement

鍏叡灞炴

闅愯棌缁ф壙灞炴

灞炴绫诲瀷鎻忚堪瀹氫箟鍦
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

鍙椾繚鎶ゅ睘鎬

闅愯棌缁ф壙灞炴

灞炴绫诲瀷鎻忚堪瀹氫箟鍦
uniqueId string 杩斿洖褰撳墠椤佃繖涓〃鍗曠殑鍞竴鏍囪瘑绗︺ CForm

鍏叡鏂规硶

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
__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 灞炴
public mixed $action;

琛ㄥ崟action鐨刄RL (璇峰弬闃 CHtml::normalizeUrl鏉ヤ簡瑙f洿璇︾粏鐨勪俊鎭) 榛樿鏄竴涓┖鐨勫瓧绗︿覆锛屾剰鍛崇潃褰撳墠璇锋眰鐨刄RL銆 褰撹〃鍗曟槸涓涓瓙琛ㄥ崟鏃讹紝姝ゅ睘鎬т細琚拷鐣ャ

activeForm 灞炴 锛堝彲鐢ㄨ嚜 v1.1.1锛
public array $activeForm;

鐢ㄤ簬鍒涘缓鍔犲己鍨嬭〃鍗曟寕浠剁殑閰嶇疆銆 杩欎釜鎸備欢灏嗙敤浜庢覆鏌撹〃鍗曞厓绱犲拰閿欒淇℃伅銆 'class'閫夐」鏄繀椤荤殑锛岀敤鏉ユ寚瀹氭寕浠剁殑绫汇 鍏跺畠鐨勯夐」灏嗕紶鍒CBaseController::beginWidget()鏂规硶銆 榛樿涓篴rray('class'=>'CActiveForm').

activeFormWidget 灞炴 鍙 锛堝彲鐢ㄨ嚜 v1.1.1锛

鍜岃繖涓〃鍗曟湁鍏崇殑鎸備欢銆倀he active form widget associated with this form. 杩欎釜鏂规硶灏嗘寜鐓activeForm鎸備欢鏉ヨ繑鍥炰竴涓姞寮哄瀷鐨勮〃鍗曘

attributes 灞炴
public array $attributes;

琛ㄥ崟鏍囩鐨凥TML灞炴у笺傚綋涓涓〃鍗曡宓屽叆鍒板彟涓涓〃鍗曟椂, 杩欎釜灞炴у皢浼氱敤浜庢覆鏌揌TML灞炴у煎埌瀛愯〃鍗曘

buttonElementClass 灞炴
public string $buttonElementClass;

浠h〃涓涓〃鍗曟寜閽殑绫汇傞粯璁や负'CFormButtonElement'.

buttons 灞炴
public CFormElementCollection getButtons()
public void setButtons(array $buttons)

杩斿洖琛ㄥ崟鐨勬寜閽厓绱犮 娉ㄦ剰锛岃繑鍥炵殑缁撴灉鏄竴涓CFormElementCollection瀵硅薄锛 鎰忓懗鐫浣犲彲浠ュ儚浣跨敤涓涓暟缁勯偅鏍蜂娇鐢ㄥ畠锛岃鍙傞槄CMap.

description 灞炴
public string $description;

琛ㄥ崟鐨勬弿杩般

elements 灞炴
public CFormElementCollection getElements()
public void setElements(array $elements)

娓叉煋琛ㄥ崟鐨勮緭鍏ュ厓绱犮 瀹冨寘鎷枃鏈瓧绗︿覆锛岃緭鍏ュ厓绱犲拰瀛愯〃鍗曘 娉ㄦ剰杩斿洖鐨勬槸涓涓CFormElementCollection瀵硅薄锛 which 鎰忓懗鐫浣犲彲浠ュ儚浣跨敤涓涓暟缁勯偅鏍蜂娇鐢ㄥ畠銆傛洿澶氳缁嗘儏鍐佃鍙傞槄CMap.

inputElementClass 灞炴
public string $inputElementClass;

浠h〃涓涓〃鍗曡緭鍏ュ厓绱犵殑绫汇傞粯璁や负'CFormInputElement'.

method 灞炴
public string $method;

琛ㄥ崟鐨勬彁浜ゆ柟娉曘傞粯璁や负'post'銆 褰撹〃鍗曟槸涓涓瓙琛ㄥ崟鏃讹紝姝ゅ睘鎬т細琚拷鐣ャ

model 灞炴
public CModel getModel(boolean $checkParent=true)
public void setModel(CModel $model)

杩斿洖鍜岃繖涓〃鍗曟湁鍏崇殑妯″瀷

models 灞炴 鍙
public array getModels()

杩斿洖鎵鏈夊拰杩欎釜琛ㄥ崟鏈夊叧鐨勬ā鍨嬫垨鑰呭瓙琛ㄥ崟銆

owner 灞炴 鍙

琛ㄥ崟鐨勬嫢鏈夎呫 鍙互寮曠敤涓涓帶鍒跺櫒鐨勫紩鐢ㄤ篃鍙互寮曠敤涓涓寕浠讹紝鍦ㄨ〃鍗曞垱寤哄拰娓叉煋鏃躲

root 灞炴 鍙
public CForm getRoot()

鏈楂橀樁灞傜殑琛ㄥ崟瀵硅薄

showErrorSummary 灞炴
public boolean $showErrorSummary;

鏄惁鏄剧ず閿欒鎽樿銆傞粯璁や负false銆

title 灞炴
public string $title;

琛ㄥ崟鐨勯鐩傞粯璁ゆ儏鍐典笅锛屽鏋滆缃簡杩欎釜锛 涓涓嚜瀹氫箟鐨勬帶浠跺彲鑳戒細琚覆鏌撳湪琛ㄥ崟鍐呭鐨勫懆鍥达紝浣跨敤棰樼洰浣滀负瀹冪殑璇存槑銆傞粯璁や负null銆

uniqueId 灞炴 鍙
protected string getUniqueId()

杩斿洖褰撳墠椤佃繖涓〃鍗曠殑鍞竴鏍囪瘑绗︺

鏂规硶璇︾粏

__construct() 鏂规硶
public void __construct(mixed $config, CModel $model=NULL, mixed $parent=NULL)
$config mixed 杩欎釜琛ㄥ崟鐨勯厤缃 瀹冨彲浠ユ槸涓涓厤缃暟缁勬垨鑰呮槸涓涓繑鍥為厤缃暟缁勭殑PHP鑴氭湰鏂囦欢鐨勫埆鍚嶃 閰嶇疆鏁扮粍鐢卞悕绉-鍊煎缁勬垚锛 鐢ㄤ簬鍒濆鍖栬繖涓〃鍗曠殑灞炴с
$model CModel 杩欎釜琛ㄥ崟鐩稿叧鐨勬ā鍨嬪璞★紝濡傛灉鏄痭ull锛 鐖剁被鐨勬ā鍨嬫潵鏇夸唬銆
$parent mixed 杩欎釜琛ㄥ崟鐨勭洿绯荤埗绫汇傚畠鍙兘鏄竴涓CBaseController瀵硅薄锛 (涓涓帶鍒跺櫒鎴栦竴涓寕浠),鎴栬呬竴涓CForm瀵硅薄銆 濡傛灉鏄墠鑰咃紝鎰忓懗鐫琛ㄥ崟鏄竴涓《绾х殑琛ㄥ崟锛涘鏋滄槸鍚庤咃紝鎰忓懗鐫琛ㄥ崟鏄竴涓瓙琛ㄥ崟銆
婧愮爜锛 framework/web/form/CForm.php#147 (鏄剧ず)
public function __construct($config,$model=null,$parent=null)
{
    
$this->setModel($model);
    if(
$parent===null)
        
$parent=Yii::app()->getController();
    
parent::__construct($config,$parent);
    
$this->init();
}

鏋勯犳柟娉曘 濡傛灉浣犺鐩栨鏂规硶锛岀‘淇濅綘娌℃湁淇敼鏂规硶鐨勭壒寰併 瑕佺‘淇濊皟鐢ㄧ埗绫荤殑瀹炵幇銆

addedElement() 鏂规硶
public void addedElement(string $name, CFormElement $element, boolean $forButtons)
$name string 鍏冪礌鐨勫悕绉
$element CFormElement 鏂版坊鍔犵殑鍏冪礌
$forButtons boolean 鍏冪礌鏄惁娣诲姞鍒颁簡buttons闆嗗悎涓 濡傛灉鏄痜alse锛屾剰鍛崇潃涓涓厓绱犳坊鍔犲埌浜elements闆嗗悎涓
婧愮爜锛 framework/web/form/CForm.php#532 (鏄剧ず)
public function addedElement($name,$element,$forButtons)
{
}

涓涓厓绱犺娣诲姞鍒板厓绱犻泦鍚堝悗璇ユ柟娉曡璋冪敤銆

clicked() 鏂规硶
public boolean clicked(string $name)
$name string 鎸夐挳鍚嶇О
{return} boolean 鎸夐挳鏄惁琚偣鍑讳簡
婧愮爜锛 framework/web/form/CForm.php#187 (鏄剧ず)
public function clicked($name)
{
    if(
strcasecmp($this->getRoot()->method,'get'))
        return isset(
$_POST[$name]);
    else
        return isset(
$_GET[$name]);
}

杩斿洖涓涓兼潵琛ㄦ槑鏄惁鎸囧畾鐨勬寜閽鐐瑰嚮浜嗐

evaluateVisible() 鏂规硶
protected boolean evaluateVisible()
{return} boolean 琛ㄥ崟鏄惁鍙
婧愮爜锛 framework/web/form/CForm.php#553 (鏄剧ず)
protected function evaluateVisible()
{
    foreach(
$this->getElements() as $element)
        if(
$element->getVisible())
            return 
true;
    return 
false;
}

璇勪及杩欎釜琛ㄥ崟鐨勫彲瑙佹с 杩欎釜鏂规硶灏嗘鏌elements鐨勫彲瑙佹с 濡傛灉鏈変换鎰忎竴涓槸鍙鐨勶紝琛ㄥ崟灏辫璁や负鏄彲瑙佺殑锛屽惁鍒欙紝涓嶅彲瑙併

getActiveFormWidget() 鏂规硶 锛堝彲鐢ㄨ嚜 v1.1.1锛
public CActiveForm getActiveFormWidget()
{return} CActiveForm 鍜岃繖涓〃鍗曟湁鍏崇殑鎸備欢銆倀he active form widget associated with this form. 杩欎釜鏂规硶灏嗘寜鐓activeForm鎸備欢鏉ヨ繑鍥炰竴涓姞寮哄瀷鐨勮〃鍗曘
婧愮爜锛 framework/web/form/CForm.php#252 (鏄剧ず)
public function getActiveFormWidget()
{
    if(
$this->_activeForm!==null)
        return 
$this->_activeForm;
    else
        return 
$this->getRoot()->_activeForm;
}

getButtons() 鏂规硶
public CFormElementCollection getButtons()
{return} CFormElementCollection 琛ㄥ崟鍏冪礌
婧愮爜锛 framework/web/form/CForm.php#349 (鏄剧ず)
public function getButtons()
{
    if(
$this->_buttons===null)
        
$this->_buttons=new CFormElementCollection($this,true);
    return 
$this->_buttons;
}

杩斿洖琛ㄥ崟鐨勬寜閽厓绱犮 娉ㄦ剰锛岃繑鍥炵殑缁撴灉鏄竴涓CFormElementCollection瀵硅薄锛 鎰忓懗鐫浣犲彲浠ュ儚浣跨敤涓涓暟缁勯偅鏍蜂娇鐢ㄥ畠锛岃鍙傞槄CMap.

getElements() 鏂规硶
public CFormElementCollection getElements()
{return} CFormElementCollection 琛ㄥ崟鍏冪礌銆
婧愮爜锛 framework/web/form/CForm.php#320 (鏄剧ず)
public function getElements()
{
    if(
$this->_elements===null)
        
$this->_elements=new CFormElementCollection($this,false);
    return 
$this->_elements;
}

娓叉煋琛ㄥ崟鐨勮緭鍏ュ厓绱犮 瀹冨寘鎷枃鏈瓧绗︿覆锛岃緭鍏ュ厓绱犲拰瀛愯〃鍗曘 娉ㄦ剰杩斿洖鐨勬槸涓涓CFormElementCollection瀵硅薄锛 which 鎰忓懗鐫浣犲彲浠ュ儚浣跨敤涓涓暟缁勯偅鏍蜂娇鐢ㄥ畠銆傛洿澶氳缁嗘儏鍐佃鍙傞槄CMap.

getModel() 鏂规硶
public CModel getModel(boolean $checkParent=true)
$checkParent boolean 濡傛灉琛ㄥ崟娌℃湁鏈韩鐨勬ā鍨嬶紝鏄惁杩斿洖鐖剁被鐨勬ā鍨
{return} CModel 鍜岃繖涓〃鍗曟湁鍏崇殑妯″瀷銆傚鏋滆〃鍗曟病鏈変竴涓ā鍨嬶紝 灏嗗湪瀹冪殑绁栧厛涓煡鎵俱
婧愮爜锛 framework/web/form/CForm.php#278 (鏄剧ず)
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;
}

杩斿洖鍜岃繖涓〃鍗曟湁鍏崇殑妯″瀷

getModels() 鏂规硶
public array getModels()
{return} array 杩斿洖鎵鏈夊拰杩欎釜琛ㄥ崟鏈夊叧鐨勬ā鍨嬫垨鑰呭瓙琛ㄥ崟銆
婧愮爜锛 framework/web/form/CForm.php#300 (鏄剧ず)
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;
}

杩斿洖鎵鏈夊拰杩欎釜琛ㄥ崟鏈夊叧鐨勬ā鍨嬫垨鑰呭瓙琛ㄥ崟銆

getOwner() 鏂规硶
public CBaseController getOwner()
{return} CBaseController 琛ㄥ崟鐨勬嫢鏈夎呫 鍙互寮曠敤涓涓帶鍒跺櫒鐨勫紩鐢ㄤ篃鍙互寮曠敤涓涓寕浠讹紝鍦ㄨ〃鍗曞垱寤哄拰娓叉煋鏃躲
婧愮爜锛 framework/web/form/CForm.php#264 (鏄剧ず)
public function getOwner()
{
    
$owner=$this->getParent();
    while(
$owner instanceof self)
        
$owner=$owner->getParent();
    return 
$owner;
}

getRoot() 鏂规硶
public CForm getRoot()
{return} CForm 鏈楂橀樁灞傜殑琛ㄥ崟瀵硅薄
婧愮爜锛 framework/web/form/CForm.php#239 (鏄剧ず)
public function getRoot()
{
    
$root=$this;
    while(
$root->getParent() instanceof self)
        
$root=$root->getParent();
    return 
$root;
}

getUniqueId() 鏂规硶
protected string getUniqueId()
{return} string 琛ㄥ崟鐨勫敮涓鏍囪瘑绗
婧愮爜锛 framework/web/form/CForm.php#565 (鏄剧ず)
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()))));
}

杩斿洖褰撳墠椤佃繖涓〃鍗曠殑鍞竴鏍囪瘑绗︺

init() 鏂规硶
protected void init()
婧愮爜锛 framework/web/form/CForm.php#162 (鏄剧ず)
protected function init()
{
}

鍒濆鍖栬〃鍗曘 杩欎釜鏂规硶鍦ㄦ瀯閫犲櫒涓璋冪敤銆 浣犲彲蹇冭鐩栨鏂规硶鏉ヨ嚜瀹氫箟鍒濆鍖 (姣斿閰嶇疆琛ㄥ崟瀵硅薄).

loadData() 鏂规硶
public void loadData()
婧愮爜锛 framework/web/form/CForm.php#216 (鏄剧ず)
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();
    }
}

鍔犺浇鎻愪氦鐨勬暟鎹埌鐩稿叧鐨勮〃鍗曟ā鍨嬩腑銆 杩欎釜鏂规硶灏嗙┛杩囨墍鏈夊拰杩欎釜琛ㄥ崟鐩稿叧鐨勬ā鍨嬪拰瀛愯〃鍗曘 澶ч噺鐨勬寚娲炬彁浜ょ殑鏁版嵁鍒版ā鍨嬩腑銆

鍙傝

offsetExists() 鏂规硶
public boolean offsetExists(mixed $offset)
$offset mixed 鎸囧畾鐨勫亸绉婚噺
{return} boolean
婧愮爜锛 framework/web/form/CForm.php#579 (鏄剧ず)
public function offsetExists($offset)
{
    return 
$this->getElements()->contains($offset);
}

杩斿洖鍦ㄦ寚瀹氬亸绉婚噺涓婃槸鍚﹀瓨鍦ㄤ竴涓厓绱犮 璇ユ柟娉曟槸ArrayAccess鎺ュ彛鎵蹇呴』鐨勩

offsetGet() 鏂规硶
public mixed offsetGet(integer $offset)
$offset integer 鎸囧畾鐨勫亸绉婚噺
{return} mixed 鍦ㄦ寚瀹氬亸绉婚噺涓婇潰鐨勫厓绱狅紝濡傛灉鍦ㄦ寚瀹氬亸绉婚噺涓婃湭鎵惧埌鍏冪礌鍒欒繑鍥瀗ull銆
婧愮爜锛 framework/web/form/CForm.php#590 (鏄剧ず)
public function offsetGet($offset)
{
    return 
$this->getElements()->itemAt($offset);
}

杩斿洖鎸囧畾鍋忕Щ閲忎笂闈㈢殑鍏冪礌銆 璇ユ柟娉曟槸ArrayAccess鎺ュ彛鎵蹇呴』鐨勩

offsetSet() 鏂规硶
public void offsetSet(integer $offset, mixed $item)
$offset integer 鎸囧畾鐨勫亸绉婚噺
$item mixed 鍏冪礌鐨勫
婧愮爜锛 framework/web/form/CForm.php#601 (鏄剧ず)
public function offsetSet($offset,$item)
{
    
$this->getElements()->add($offset,$item);
}

鍦ㄦ寚瀹氬亸绉婚噺涓婅缃厓绱犮 璇ユ柟娉曟槸ArrayAccess鎺ュ彛鎵蹇呴』鐨勩

offsetUnset() 鏂规硶
public void offsetUnset(mixed $offset)
$offset mixed 鎸囧畾鐨勫亸绉婚噺
婧愮爜锛 framework/web/form/CForm.php#611 (鏄剧ず)
public function offsetUnset($offset)
{
    
$this->getElements()->remove($offset);
}

娉ㄩ攢鎸囧畾鍋忕Щ閲忎笂鐨勫厓绱犮 璇ユ柟娉曟槸ArrayAccess鎺ュ彛鎵蹇呴』鐨勩

removedElement() 鏂规硶
public void removedElement(string $name, CFormElement $element, boolean $forButtons)
$name string 鍏冪礌鐨勫悕绉
$element CFormElement 琚垹闄ょ殑鍏冪礌
$forButtons boolean 鍏冪礌鏄惁浠buttons闆嗗悎涓垹闄 濡傛灉鏄痜alse锛屾剰鍛崇潃鍏冪礌浠elements闆嗗悎涓垹闄や簡銆
婧愮爜锛 framework/web/form/CForm.php#543 (鏄剧ず)
public function removedElement($name,$element,$forButtons)
{
}

涓涓厓绱犱粠鍏冪礌闆嗗悎涓鍒犻櫎鍚庤鏂规硶琚皟鐢ㄣ

render() 鏂规硶
public string render()
{return} string 娓叉煋缁撴灉
婧愮爜锛 framework/web/form/CForm.php#375 (鏄剧ず)
public function render()
{
    return 
$this->renderBegin() . $this->renderBody() . $this->renderEnd();
}

娓叉煋琛ㄥ崟銆 榛樿浠呮槸璋冪敤renderBegin, renderBodyrenderEnd

renderBegin() 鏂规硶
public string renderBegin()
{return} string 娓叉煋缁撴灉
婧愮爜锛 framework/web/form/CForm.php#385 (鏄剧ず)
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";
    }
}

娓叉煋琛ㄥ崟鐨勫紑濮嬫爣绛俱 榛樿鏄覆鏌撹〃鍗曠殑寮濮嬫爣绛俱

renderBody() 鏂规硶
public string renderBody()
{return} string 娓叉煋缁撴灉
婧愮爜锛 framework/web/form/CForm.php#440 (鏄剧ず)
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;
}

娓叉煋琛ㄥ崟鐨勪富浣撱 杩欎釜鏂规硶涓昏娓叉煋elementsbuttons銆 濡傛灉titledescription琚寚瀹氾紝瀹冧滑鍚屾牱浼氳娓叉煋銆 濡傛灉鍏宠仈妯″瀷鍖呭惈閿欒锛岄敊璇憳瑕佷細鏄剧ず銆 琛ㄥ崟鏍囩灏嗕笉浼氳娓叉煋銆 璇疯皟鐢renderBeginrenderEnd鏉ユ覆鏌撹〃鍗曠殑寮濮嬪拰缁撴潫鏍囩銆 浣犲彲浠ヨ鐩栬繖涓柟娉曟潵鑷畾涔夎〃鍗曠殑娓叉煋銆

renderButtons() 鏂规硶
public string renderButtons()
{return} string 娓叉煋鐨勭粨鏋
婧愮爜锛 framework/web/form/CForm.php#485 (鏄剧ず)
public function renderButtons()
{
    
$output='';
    foreach(
$this->getButtons() as $button)
        
$output.=$this->renderElement($button);
    return 
$output!=='' "<div class=\"row buttons\">".$output."</div>\n" '';
}

娓叉煋琛ㄥ崟鐨buttons.

renderElement() 鏂规硶
public string renderElement(mixed $element)
$element mixed 瑕佽娓叉煋鐨勮〃鍗曞厓绱狅紝瀹冨彲浠ユ槸涓涓CFormElement瀹炰緥锛 涔熷彲浠ユ槸涓涓唬琛ㄨ〃鍗曞厓绱犵殑瀛楃涓层
{return} string 娓叉煋鐨勭粨鏋
婧愮爜锛 framework/web/form/CForm.php#499 (鏄剧ず)
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 
'';
}

娓叉煋涓涓崟涓鐨勫厓绱狅紝瀹冨彲浠ユ槸涓涓緭鍏ュ厓绱狅紝涓涓瓙琛ㄥ崟锛屼竴涓瓧绗︿覆鎴栦竴涓寜閽

renderElements() 鏂规硶
public string renderElements()
{return} string 娓叉煋鐨勭粨鏋
婧愮爜锛 framework/web/form/CForm.php#473 (鏄剧ず)
public function renderElements()
{
    
$output='';
    foreach(
$this->getElements() as $element)
        
$output.=$this->renderElement($element);
    return 
$output;
}

娓叉煋杩欎釜琛ㄥ崟鐨elements

renderEnd() 鏂规硶
public string renderEnd()
{return} string 娓叉煋缁撴灉
婧愮爜锛 framework/web/form/CForm.php#418 (鏄剧ず)
public function renderEnd()
{
    if(
$this->getParent() instanceof self)
        return 
'';
    else
    {
        
ob_start();
        
$this->getOwner()->endWidget();
        return 
ob_get_clean();
    }
}

娓叉煋琛ㄥ崟鐨勭粨鏋滄爣绛俱

setButtons() 鏂规硶
public void setButtons(array $buttons)
$buttons array 鎸夐挳鐨勯厤缃
婧愮爜锛 framework/web/form/CForm.php#363 (鏄剧ず)
public function setButtons($buttons)
{
    
$collection=$this->getButtons();
    foreach(
$buttons as $name=>$config)
        
$collection->add($name,$config);
}

閰嶇疆琛ㄥ崟鐨勬寜閽 閰嶇疆蹇呴』鏄竴涓互鎸夐挳鍚嶄负绱㈠紩鐨勬寜閽厤缃暟缁勩 姣忎釜鎸夐挳鐨勯厤缃敱鍚嶇О-鍊煎缁勬垚锛 鐢ㄤ簬鍒濆鍖栦竴涓CFormButtonElement瀵硅薄銆

setElements() 鏂规硶
public void setElements(array $elements)
$elements array 鎸夐挳鐨勯厤缃
婧愮爜锛 framework/web/form/CForm.php#336 (鏄剧ず)
public function setElements($elements)
{
    
$collection=$this->getElements();
    foreach(
$elements as $name=>$config)
        
$collection->add($name,$config);
}

閰嶇疆琛ㄥ崟鐨勮緭鍏ュ厓绱犮 閰嶇疆蹇呴』鏄互杈撳叆鍏冪礌鍚嶇О涓虹储寮曠殑杈撳叆鍏冪礌閰嶇疆鏁扮粍銆 姣忎釜杈撳叆鍏冪礌鏁扮粍鐢卞悕绉-鍊煎缁勬垚锛 鐢ㄤ簬鍒濆鍖栦竴涓CFormStringElement瀵硅薄(褰'type'涓'string'鏃),涓涓CFormElement瀵硅薄 (褰'type'鏄互'Form'缁撳熬鐨勫瓧绗︿覆鏃), 鎴栬呬竴涓CFormInputElement瀵硅薄 鍦ㄦ墍鏈夊叾瀹冩儏鍐典笅銆

setModel() 鏂规硶
public void setModel(CModel $model)
$model CModel 鍜岃繖涓〃鍗曟湁鍏崇殑妯″瀷
婧愮爜锛 framework/web/form/CForm.php#291 (鏄剧ず)
public function setModel($model)
{
    
$this->_model=$model;
}

submitted() 鏂规硶
public boolean submitted(string $buttonName='submit', boolean $loadData=true)
$buttonName string 鎻愪氦鎸夐挳鐨勫悕绉
$loadData boolean 濡傛灉琛ㄥ崟琚彁浜ゆ槸鍚﹁皟鐢loadData 浠ヤ究鎻愪氦鐨勬暟鎹彲浠ヤ紶缁欑浉鍏崇殑妯″瀷
{return} boolean 琛ㄥ崟鏄惁琚彁浜や簡銆
婧愮爜锛 framework/web/form/CForm.php#174 (鏄剧ず)
public function submitted($buttonName='submit',$loadData=true)
{
    
$ret=$this->clicked($this->getUniqueId()) && $this->clicked($buttonName);
    if(
$ret && $loadData)
        
$this->loadData();
    return 
$ret;
}

杩斿洖涓涓兼潵琛ㄦ槑鏄惁琛ㄥ桨琚彁浜や簡銆

鍙傝

validate() 鏂规硶
public boolean validate()
{return} boolean 鏄惁鎵鏈夌殑妯″瀷閮芥湁鏁
婧愮爜锛 framework/web/form/CForm.php#202 (鏄剧ず)
public function validate()
{
    
$ret=true;
    foreach(
$this->getModels() as $model)
        
$ret=$model->validate() && $ret;
    return 
$ret;
}

楠岃瘉涓庤繖涓〃鍗曠浉鍏崇殑妯″瀷銆 鎵鏈夌殑妯″瀷锛屽寘鎷拰閭d簺瀛愯〃鍗曠浉鍏崇殑锛 閮藉皢瀹岄獙璇侊紝浣犲彲浠ヤ娇鐢CModel::getErrors()鏉 妫绱㈤敊璇俊鎭

Copyright © 2008-2011 by Yii Software LLC
All Rights Reserved.