表單輔助函數(shù)
表單輔助函數(shù)文件包含那些幫助你使用表單的函數(shù)。
載入輔助函數(shù)
用下面的代碼載入該輔助函數(shù):
$this->load->helper('form');
下列函數(shù)才可用:
form_open()
創(chuàng)建一個(gè)開(kāi)始form標(biāo)簽,相對(duì)于你的配置文檔中的基礎(chǔ)URL。允許你添加一些form屬性和一些隱藏表單,并且他會(huì)基于你的 config.php 文件里設(shè)置的編碼,自動(dòng)生成 accept-charset 這個(gè)屬性。
使用這個(gè)函數(shù)而不是直接硬編碼HTML的主要的優(yōu)勢(shì)是使你的程序可以方便的轉(zhuǎn)換,如果你的URL變化的話(huà)。
下面是一個(gè)例子:
echo form_open('email/send');
上面的例子會(huì)創(chuàng)建一個(gè)form提交至你的基礎(chǔ)URL加上"email/send" URI片段,像這樣:
<form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send" />
添加一些屬性
可以在第二個(gè)參數(shù)里傳遞一個(gè)關(guān)聯(lián)數(shù)組來(lái)達(dá)到這一目的, 像這樣:
$attributes = array('class' => 'email', 'id' => 'myform');
echo form_open('email/send', $attributes);
上面的例子會(huì)創(chuàng)建一個(gè)這樣的form標(biāo)簽:
<form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send" ?class="email" ?id="myform" />
增加隱藏域
隱藏域可以使用數(shù)組加在第三個(gè)參數(shù)上,就像這樣:
$hidden = array('username' => 'Joe', 'member_id' => '234');
echo form_open('email/send', '', $hidden);
上面的例子會(huì)創(chuàng)建一個(gè)這樣的form標(biāo)簽和這些隱藏域:
<form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send">
<input type="hidden" name="username" value="Joe" />
<input type="hidden" name="member_id" value="234" />
form_open_multipart()
這個(gè)函數(shù)和上面的form_open()函數(shù)完全一樣,不同之處在于它多了一個(gè)multipart屬性。如果你要制作一個(gè)上傳文件的表單,這個(gè)屬性是必須的。
form_hidden()
可以使你創(chuàng)建一個(gè)隱藏輸入欄。你可以輸入name和value來(lái)創(chuàng)建一個(gè):
form_hidden('username', 'johndoe');
echo form_hidden('username', 'johndoe');【此行非原文內(nèi)容,我認(rèn)為上面那行應(yīng)該寫(xiě)上 echo ,如此行效果,IT不倒翁注】
// 將產(chǎn)生:
<input type="hidden" name="username" value="johndoe" />
或者你也可以使用數(shù)組來(lái)聯(lián)合創(chuàng)建它們:
$data = array(
??????????????'name'??=> 'John Doe',
??????????????'email' => 'john@example.com',
??????????????'url'???=> 'http://example.com'
????????????);
echo form_hidden($data);
// 將產(chǎn)生:
<input type="hidden" name="name" value="John Doe" />
<input type="hidden" name="email" value="john@example.com" />
<input type="hidden" name="url" value="http://example.com" />
form_input()
可以使你創(chuàng)建一個(gè)標(biāo)準(zhǔn)輸入欄。你可以在第一和第二個(gè)參數(shù)里輸入name和value來(lái)創(chuàng)建一個(gè):
echo form_input('username', 'johndoe');
或者你也可以用關(guān)聯(lián)數(shù)組來(lái)添加你想加入的內(nèi)容:
$data = array(
??????????????'name'????????=> 'username',
??????????????'id'??????????=> 'username',
??????????????'value'???????=> 'johndoe',
??????????????'maxlength'???=> '100',
??????????????'size'????????=> '50',
??????????????'style'?????? => 'width:50%',
????????????);
echo form_input($data);
// 將產(chǎn)生:
<input type="text" name="username" id="username" value="johndoe" maxlength="100" size="50" style="width:50%" />
如果你想加入一些額外的內(nèi)容,例如Javascript,你可以在第三個(gè)參數(shù)里輸入字符串來(lái)創(chuàng)建它:
$js = 'onClick="some_function()"';
echo form_input('username', 'johndoe', $js);
form_password()
此函數(shù)除了是設(shè)置type為“password”外和上面的 form_input() 函數(shù)完全一樣。
form_upload()
此函數(shù)與上面的 form_input() 函數(shù)幾乎完全相同,唯一的區(qū)別是此函數(shù)所設(shè)置的 type 為 "file",用來(lái)上傳文件。
form_textarea()
此函數(shù)與上面的 form_input() 函數(shù)幾乎完全相同,唯一的區(qū)別是此函數(shù)所生成的是一個(gè)"textarea"。說(shuō)明:上面的范例中所指定的 "maxlength" 和 "size" 屬性在這里變成了 "rows" 和 "cols"。
form_dropdown()
創(chuàng)建一個(gè)標(biāo)準(zhǔn)的下拉列表字段。第一個(gè)參數(shù)是字段名,第二個(gè)參數(shù)是一個(gè)包含各個(gè)選項(xiàng)的關(guān)聯(lián)數(shù)組,第三個(gè)參數(shù)是你想要設(shè)置為默認(rèn)被選中的值。第三個(gè)參數(shù)也可以是一個(gè)包含多個(gè)項(xiàng)目的數(shù)組,CI 將為你創(chuàng)建多選下拉列表。例如:
$options = array(
??????????????????'small'??=> 'Small Shirt',
??????????????????'med'????=> 'Medium Shirt',
??????????????????'large'?? => 'Large Shirt',
??????????????????'xlarge' => 'Extra Large Shirt',
????????????????);
$shirts_on_sale = array('small', 'large');
echo form_dropdown('shirts', $options, 'large');
// 將會(huì)生成:
<select name="shirts">
<option value="small">Small Shirt</option>
<option value="med">Medium Shirt</option>
<option value="large" selected="selected">Large Shirt</option>
<option value="xlarge">Extra Large Shirt</option>
</select>
echo form_dropdown('shirts', $options, $shirts_on_sale);
// 將會(huì)生成:
<select name="shirts" multiple="multiple">
<option value="small" selected="selected">Small Shirt</option>
<option value="med">Medium Shirt</option>
<option value="large" selected="selected">Large Shirt</option>
<option value="xlarge">Extra Large Shirt</option>
</select>
如果你希望 <select> 開(kāi)始標(biāo)簽包含一些額外的屬性,例如 id 屬性以及JavaScript,你可以將一個(gè)字符串作為第四個(gè)參數(shù)傳遞過(guò)去:
$js = 'id="shirts" onChange="some_function();"';
echo form_dropdown('shirts', $options, 'large', $js);
如果$options參數(shù)是一個(gè)多維數(shù)組,form_dropdown() 函數(shù)將使用數(shù)組的鍵作為 label值生成一個(gè) <optgroup> 標(biāo)簽。
form_multiselect()
該函數(shù)可以生成標(biāo)準(zhǔn)的復(fù)選列表。第一個(gè)參數(shù)給出表單項(xiàng)的名稱(chēng);第二個(gè)參數(shù)用一個(gè)關(guān)聯(lián)數(shù)組給出該表單項(xiàng)的全部可選項(xiàng)列表;第三個(gè)參數(shù)規(guī)定哪幾項(xiàng)是默認(rèn)已選取的。這些參數(shù)的用法跟上面的form_dropdown()完全一樣。當(dāng)然,由于是復(fù)選的,在處理傳值的時(shí)候,我們要使用數(shù)組的語(yǔ)法。數(shù)組語(yǔ)法的例子:foo[]。
form_fieldset()
幫助你生成fieldset/legend標(biāo)簽。
echo form_fieldset('Address Information');
echo "<p>fieldset content here</p>\n";
echo form_fieldset_close();
// 生成
<fieldset>
<legend>Address Information</legend>
<p>form content here</p>
</fieldset>
與其它函數(shù)類(lèi)似,在第二個(gè)參數(shù)你可以傳遞一個(gè)關(guān)聯(lián)數(shù)組來(lái)添加你自己想要的自定義的屬性。
$attributes = array('id' => 'address_info', 'class' => 'address_info');
echo form_fieldset('Address Information', $attributes);
echo "<p>fieldset content here</p>\n";
echo form_fieldset_close();
// 生成
<fieldset id="address_info" class="address_info">
<legend>Address Information</legend>
<p>form content here</p>
</fieldset>
form_fieldset_close()
生成一個(gè)結(jié)束的fieldset標(biāo)簽。唯一的優(yōu)勢(shì)是,使用該函數(shù),你可以傳遞數(shù)據(jù),這些數(shù)據(jù)會(huì)附加在這個(gè)標(biāo)簽的后面。例如:
$string = "</div></div>";
echo form_fieldset_close($string);
// 會(huì)生成:
</fieldset>
</div></div>
form_checkbox()
作用是生成一個(gè)復(fù)選框。簡(jiǎn)單范例如下:
echo form_checkbox('newsletter', 'accept', TRUE);
// 將會(huì)生成:
<input type="checkbox" name="newsletter" value="accept" checked="checked" />
第三個(gè)參數(shù)為 TRUE/FALSE 布爾值,決定復(fù)選框是否被默認(rèn)選中。
與其它表單輔助函數(shù)相似的是,你可以把包含了屬性值的數(shù)組作為參數(shù)傳遞給本函數(shù):
$data = array(
????'name'????????=> 'newsletter',
????'id'??????????=> 'newsletter',
????'value'???????=> 'accept',
????'checked'?????=> TRUE,
????'style'?????? => 'margin:10px',
????);
echo form_checkbox($data);
// 將會(huì)生成:
<input type="checkbox" name="newsletter" id="newsletter" value="accept" checked="checked" style="margin:10px" />
與其它函數(shù)相似的,如果你希望此標(biāo)簽包含額外的數(shù)據(jù),例如JavaScript,你可以將一個(gè)字符串作為第四個(gè)參數(shù)傳遞過(guò)去:
$js = 'onClick="some_function()"';
echo form_checkbox('newsletter', 'accept', TRUE, $js)
form_radio()
此函數(shù)與上面的 form_checkbox() 函數(shù)幾乎完全相同,唯一的區(qū)別是此函數(shù)生成的是 "radio" 單選框。
form_submit()
幫助你生成一個(gè)標(biāo)準(zhǔn)的submit按鈕。示例如下:
echo form_submit('mysubmit', 'Submit Post!');
// 會(huì)生成:
<input type="submit" name="mysubmit" value="Submit Post!" />
與其它函數(shù)類(lèi)似,第一個(gè)參數(shù)你可以傳遞一個(gè)關(guān)聯(lián)數(shù)組來(lái)設(shè)置你所需要的屬性。第三個(gè)參數(shù)允許你添加一些額外的內(nèi)容到生成的HTML代碼里。
form_label()
幫助你生成一個(gè)label.示例如下:
echo form_label('你的名字是?','username');
// 會(huì)生成:
<label for="username">你的名字是?</label>
與其它函數(shù)類(lèi)似,你可以在第三個(gè)參數(shù)傳入一個(gè)關(guān)聯(lián)數(shù)組來(lái)增加一些額外的屬性值。
$attributes = array(
'class' => 'mycustomclass',
'style' => 'color: #000;',
);
echo form_label('你的名字是?', 'username', $attributes);
// 會(huì)生成:
<label for="username" class="mycustomclass" style="color: #000;">你的名字是?</label>
form_reset()
作用是生成一個(gè)標(biāo)準(zhǔn)的 reset 按鈕。此函數(shù)用法與 form_submit() 完全相同。
form_button()
作用是生成一個(gè)標(biāo)準(zhǔn)的按鈕。你至少要給出兩個(gè)參數(shù),它們分別是按鈕的名稱(chēng)和內(nèi)容:
echo form_button('name','content');
// 將會(huì)生成
<button name="name" type="button">Content</button>
或者你也可以將一個(gè)包含有任何你想要的數(shù)據(jù)的關(guān)聯(lián)數(shù)組作為參數(shù)傳遞過(guò)去:
$data = array(
????'name' => 'button',
????'id' => 'button',
????'value' => 'true',
????'type' => 'reset',
????'content' => 'Reset'
);
echo form_button($data);
// 將會(huì)生成:
<button name="button" id="button" value="true" type="reset">Reset</button>
如果你希望表單包含一些額外的數(shù)據(jù),例如JavaScript,你可以將一個(gè)字符串作為第三個(gè)參數(shù)傳遞過(guò)去:
$js = 'onClick="some_function()"';
echo form_button('mybutton', 'Click Me', $js);
form_close()
作用是生成一個(gè)關(guān)閉 </form> 標(biāo)簽。使用此函數(shù)的唯一好處是,你可以將這個(gè)標(biāo)簽之后要添加的數(shù)據(jù)也傳遞過(guò)去。例如:
$string = "</div></div>";
echo form_close($string);
// 將會(huì)生成:
</form>
</div></div>
form_prep()
允許你放心地在表單元素中使用HTML字符(例如引號(hào)),不必?fù)?dān)心破壞表單??紤]一下下面這個(gè)范例:
$string = 'Here is a string containing "quoted" text.';
<input type="text" name="myform" value="<var<$string</var<" />
因?yàn)樯厦娴淖址邪艘?hào),因而導(dǎo)致表單被破壞。form_prep()函數(shù)會(huì)轉(zhuǎn)換HTML,因此可以放心使用:
<input type="text" name="myform" value="<var<<?php echo form_prep($string); ?></var<" />
說(shuō)明: 如果你使用的是表單輔助函數(shù)中的任何一個(gè),數(shù)據(jù)都會(huì)自動(dòng)的進(jìn)行預(yù)處理,所以沒(méi)有必要調(diào)用本函數(shù)。只有當(dāng)你手動(dòng)創(chuàng)建表單元素時(shí),你才需要本函數(shù)。
set_value()
允許你設(shè)置 input 或者 textarea 字段的值。你必須在第一個(gè)參數(shù)中指定字段名稱(chēng)。第二個(gè)參數(shù)是可選的,允許你給字段設(shè)置一個(gè)默認(rèn)值。例如:
<input type="text" name="quantity" value="<?php echo set_value('quantity', '0'); ?>" size="50" />
當(dāng)上面的表單元素第一次加載時(shí)將會(huì)顯示"0"。
set_select()
如果你使用 <select> 下拉菜單,此函數(shù)允許你顯示選中的菜單項(xiàng)。第一個(gè)參數(shù)必須包含下拉菜單的名稱(chēng),第二個(gè)參數(shù)必須包含每個(gè)菜單項(xiàng)的值。,第三個(gè)參數(shù)是可選的,作用是設(shè)置菜單項(xiàng)為默認(rèn)選中狀態(tài)(使用TRUE/FALSE布爾值)。
范例:
<select name="myselect">
<option value="one" <?php echo set_select('myselect', 'one', TRUE); ?> >One</option>
<option value="two" <?php echo set_select('myselect', 'two'); ?> >Two</option>
<option value="three" <?php echo set_select('myselect', 'three'); ?> >Three</option>
</select>
set_checkbox()
允許你顯示一個(gè)處于提交狀態(tài)的復(fù)選框。第一個(gè)參數(shù)必須包含此復(fù)選框的名稱(chēng),第二個(gè)參數(shù)必須包含它的值,第三個(gè)參數(shù)是可選的,作用是設(shè)置復(fù)選框?yàn)槟J(rèn)選中狀態(tài)(使用TRUE/FALSE布爾值)。例如:
<input type="checkbox" name="mycheck" value="1" <?php echo set_checkbox('mycheck', '1'); ?> />
<input type="checkbox" name="mycheck" value="2" <?php echo set_checkbox('mycheck', '2'); ?> />
set_radio()
允許你顯示那些處于提交狀態(tài)的單選框。這個(gè)函數(shù)與前面的 set_checkbox() 是相同的。
<input type="radio" name="myradio" value="1" <?php echo set_radio('myradio', '1', TRUE); ?> />
<input type="radio" name="myradio" value="2" <?php echo set_radio('myradio', '2'); ?> />
?