表單輔助函數(shù)包含了一些函數(shù)用于幫助你處理表單。
使用下面的代碼來(lái)加載表單輔助函數(shù):
$this->load->helper('form');
你可能會(huì)需要在表單元素中使用 HTML 或者諸如引號(hào)這樣的字符,為了安全性, 你需要使用 通用函數(shù) html_escape() 。
考慮下面這個(gè)例子:
$string = 'Here is a string containing "quoted" text.';
<input type="text" name="myfield" value="<?php echo $string; ?>" />
因?yàn)樯厦娴淖址邪艘粚?duì)引號(hào),它會(huì)破壞表單,使用 html_escape() 函數(shù)可以對(duì) HTML 的特殊字符進(jìn)行轉(zhuǎn)義,從而可以安全的在域值中使用字符串:
<input type="text" name="myfield" value="<?php echo html_escape($string); ?>" />
注解
如果你使用了這個(gè)頁(yè)面上介紹的任何一個(gè)函數(shù),表單的域值會(huì)被自動(dòng)轉(zhuǎn)義, 所以你無(wú)需再調(diào)用這個(gè)函數(shù)。只有在你創(chuàng)建自己的表單元素時(shí)需要使用它。
該輔助函數(shù)有下列可用函數(shù):
form_open([$action = ''[, $attributes = ''[, $hidden = array()]]])
參數(shù):
返回: An HTML form opening tag
返回類型: string
生成一個(gè) form 起始標(biāo)簽,并且它的 action URL 會(huì)根據(jù)你的配置文件自動(dòng)生成。 你還可以給表單添加屬性和隱藏域,另外,它還會(huì)根據(jù)你配置文件中的字符集參數(shù) 自動(dòng)生成 accept-charset 屬性。
使用該函數(shù)來(lái)生成標(biāo)簽比你自己寫 HTML 代碼最大的好處是:當(dāng)你的 URL 變動(dòng)時(shí), 它可以提供更好的可移植性。
這里是個(gè)簡(jiǎn)單的例子:
echo form_open('email/send');
上面的代碼會(huì)創(chuàng)建一個(gè)表單,它的 action 為根 URL 加上 "email/send",向下面這樣:
<form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send">
添加屬性
可以通過(guò)第二個(gè)參數(shù)傳遞一個(gè)關(guān)聯(lián)數(shù)組來(lái)添加屬性,例如:
$attributes = array('class' => 'email', 'id' => 'myform'); echo form_open('email/send', $attributes);
另外,第二個(gè)參數(shù)你也可以直接使用字符串:
echo form_open('email/send', 'class="email" id="myform"');
上面的代碼會(huì)創(chuàng)建一個(gè)類似于下面的表單:
<form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send" class="email" id="myform">
添加隱藏域
可以通過(guò)第三個(gè)參數(shù)傳遞一個(gè)關(guān)聯(lián)數(shù)組來(lái)添加隱藏域,例如:
$hidden = array('username' => 'Joe', 'member_id' => '234'); echo form_open('email/send', '', $hidden);
你可以使用一個(gè)空值跳過(guò)第二個(gè)參數(shù)。
上面的代碼會(huì)創(chuàng)建一個(gè)類似于下面的表單:
<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([$action = ''[, $attributes = array()[, $hidden = array()]])
參數(shù):
返回: An HTML multipart form opening tag
返回類型: string
這個(gè)函數(shù)和上面的 form_open() 函數(shù)完全一樣, 只是它會(huì)給表單添加一個(gè) multipart 屬性,在你使用表單上傳文件時(shí)必須使用它。
form_hidden($name[, $value = ''])
參數(shù):
返回: An HTML hidden input field tag
返回類型: string
生成隱藏域。你可以使用名稱和值兩個(gè)參數(shù)來(lái)創(chuàng)建一個(gè)隱藏域:
form_hidden('username', 'johndoe');
// Would produce: <input type="hidden" name="username" value="johndoe" />
... 或者你可以使用一個(gè)關(guān)聯(lián)數(shù)組,來(lái)生成多個(gè)隱藏域:
$data = array(
'name' => 'John Doe',
'email' => 'john@example.com',
'url' => 'http://example.com'
);
echo form_hidden($data);
/*
Would produce:
<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" />
*/
你還可以向第二個(gè)參數(shù)傳遞一個(gè)關(guān)聯(lián)數(shù)組:
$data = array(
'name' => 'John Doe',
'email' => 'john@example.com',
'url' => 'http://example.com'
);
echo form_hidden('my_array', $data);
/*
Would produce:
<input type="hidden" name="my_array[name]" value="John Doe" />
<input type="hidden" name="my_array[email]" value="john@example.com" />
<input type="hidden" name="my_array[url]" value="http://example.com" />
*/
如果你想創(chuàng)建帶有其他屬性的隱藏域,可以這樣:
$data = array(
'type' => 'hidden',
'name' => 'email',
'id' => 'hiddenemail',
'value' => 'john@example.com',
'class' => 'hiddenemail'
);
echo form_input($data);
/*
Would produce:
<input type="hidden" name="email" value="john@example.com" id="hiddenemail" class="hiddenemail" />
*/
form_input([$data = ''[, $value = ''[, $extra = '']])
參數(shù):
返回: An HTML text input field tag
返回類型: string
用于生成標(biāo)準(zhǔn)的文本輸入框,你可以簡(jiǎn)單的使用文本域的名稱和值:
echo form_input('username', 'johndoe');
或者使用一個(gè)關(guān)聯(lián)數(shù)組,來(lái)包含任何你想要的數(shù)據(jù):
$data = array(
'name' => 'username',
'id' => 'username',
'value' => 'johndoe',
'maxlength' => '100',
'size' => '50',
'style' => 'width:50%'
);
echo form_input($data);
/*
Would produce:
<input type="text" name="username" value="johndoe" id="username" maxlength="100" size="50" style="width:50%" />
*/
如果你還希望能包含一些額外的數(shù)據(jù),譬如 JavaScript ,你可以通過(guò)第三個(gè)參數(shù)傳一個(gè)字符串:
$js = 'onClick="some_function()"';
echo form_input('username', 'johndoe', $js);
form_password([$data = ''[, $value = ''[, $extra = '']]])
參數(shù):
返回: An HTML password input field tag
返回類型: string
該函數(shù)和上面的 form_input() 函數(shù)一樣,只是生成的輸入框?yàn)?"password" 類型。
form_upload([$data = ''[, $value = ''[, $extra = '']]])
參數(shù):
返回: An HTML file upload input field tag
返回類型: string
該函數(shù)和上面的 form_input() 函數(shù)一樣,只是生成的輸入框?yàn)?"file" 類型, 可以用來(lái)上傳文件。
form_textarea([$data = ''[, $value = ''[, $extra = '']]])
參數(shù):
返回: An HTML textarea tag
返回類型: string
該函數(shù)和上面的 form_input() 函數(shù)一樣,只是生成的輸入框?yàn)?"textarea" 類型。
注解
對(duì)于 textarea 類型的輸入框,你可以使用 rows 和 cols 屬性, 來(lái)代替上面例子中的 maxlength 和 size 屬性。
form_dropdown([$name = ''[, $options = array()[, $selected = array()[, $extra = '']]]])
參數(shù):
返回: An HTML dropdown select field tag
返回類型: string
用于生成一個(gè)標(biāo)準(zhǔn)的下拉框域。第一個(gè)參數(shù)為域的名稱,第二個(gè)參數(shù)為一個(gè)關(guān)聯(lián)數(shù)組, 包含所有的選項(xiàng),第三個(gè)參數(shù)為你希望默認(rèn)選中的值。你也可以把第三個(gè)參數(shù)設(shè)置成 一個(gè)包含多個(gè)值的數(shù)組,CodeIgniter 將會(huì)為你生成多選下拉框。
例如:
$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');
/*
Would produce:
<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);
/*
Would produce:
<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>
*/
如果你希望為起始標(biāo)簽 添加一些額外的數(shù)據(jù),例如 id 屬性或 JavaScript , 你可以通過(guò)第四個(gè)參數(shù)傳一個(gè)字符串:
$js = 'id="shirts" onChange="some_function();"';
echo form_dropdown('shirts', $options, 'large', $js);
如果你傳遞的 $options 數(shù)組是個(gè)多維數(shù)組,form_dropdown() 函數(shù)將會(huì)生成帶 的下拉框,并使用數(shù)組的鍵作為 label 。
form_multiselect([$name = ''[, $options = array()[, $selected = array()[, $extra = '']]]])
參數(shù):
返回: An HTML dropdown multiselect field tag
返回類型: string
用于生成一個(gè)標(biāo)準(zhǔn)的多選下拉框。第一個(gè)參數(shù)為域的名稱,第二個(gè)參數(shù)為一個(gè)關(guān)聯(lián)數(shù)組, 包含所有的選項(xiàng),第三個(gè)參數(shù)為你希望默認(rèn)選中的一個(gè)或多個(gè)值。
參數(shù)的用法和上面的 form_dropdown() 函數(shù)一樣,只是域的名稱需要使用 數(shù)組語(yǔ)法,例如:foo[]
form_fieldset([$legend_text = ''[, $attributes = array()]])
參數(shù):
返回:
An HTML fieldset opening tag
返回類型: string
用于生成 fieldset 和 legend 域。
例如:
echo form_fieldset('Address Information');
echo "<p>fieldset content here</p>\n";
echo form_fieldset_close();
/*
Produces:
<fieldset>
<legend>Address Information</legend>
<p>form content here</p>
</fieldset>
*/
和其他的函數(shù)類似,你也可以通過(guò)給第二個(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();
/*
Produces:
<fieldset id="address_info" class="address_info">
<legend>Address Information</legend>
<p>form content here</p>
</fieldset>
*/
form_fieldset_close([$extra = ''])
參數(shù):
返回: An HTML fieldset closing tag
返回類型: string
用于生成結(jié)束標(biāo)簽 ,使用這個(gè)函數(shù)唯一的一個(gè)好處是, 它可以在結(jié)束標(biāo)簽的后面加上一些其他的數(shù)據(jù)。例如:
$string = '</div></div>';
echo form_fieldset_close($string);
// Would produce: </fieldset></div></div>
form_checkbox([$data = ''[, $value = ''[, $checked = FALSE[, $extra = '']]]])
參數(shù):
返回: An HTML checkbox input tag
返回類型: string
用于生成一個(gè)復(fù)選框,例如:
echo form_checkbox('newsletter', 'accept', TRUE);
// Would produce: <input type="checkbox" name="newsletter" value="accept" checked="checked" />
第三個(gè)參數(shù)為布爾值 TRUE 或 FALSE ,用于指定復(fù)選框默認(rèn)是否為選定狀態(tài)。
和其他函數(shù)一樣,你可以傳一個(gè)屬性的數(shù)組給它:
$data = array(
'name' => 'newsletter',
'id' => 'newsletter',
'value' => 'accept',
'checked' => TRUE,
'style' => 'margin:10px'
);
echo form_checkbox($data);
// Would produce: <input type="checkbox" name="newsletter" id="newsletter" value="accept" checked="checked" style="margin:10px" />
另外,如果你希望向標(biāo)簽中添加額外的數(shù)據(jù)如 JavaScript ,也可以傳一個(gè)字符串給第四個(gè)參數(shù):
$js = 'onClick="some_function()"';
echo form_checkbox('newsletter', 'accept', TRUE, $js)
form_radio([$data = ''[, $value = ''[, $checked = FALSE[, $extra = '']]]])
參數(shù):
返回: An HTML radio input tag
返回類型: string
該函數(shù)和 form_checkbox() 函數(shù)完全一樣,只是它生成的是單選框。
form_label([$label_text = ''[, $id = ''[, $attributes = array()]]])
參數(shù):
返回: An HTML field label tag
返回類型: string
生成 標(biāo)簽,例如:
echo form_label('What is your Name', 'username');
// Would produce: <label for="username">What is your Name</label>
和其他的函數(shù)一樣,如果你想添加額外的屬性的話,可以傳一個(gè)關(guān)聯(lián)數(shù)組給第三個(gè)參數(shù)。
例如:
$attributes = array(
'class' => 'mycustomclass',
'style' => 'color: #000;'
);
echo form_label('What is your Name', 'username', $attributes);
// Would produce: <label for="username" class="mycustomclass" style="color: #000;">What is your Name</label>
form_submit([$data = ''[, $value = ''[, $extra = '']]])
參數(shù):
返回: An HTML input submit tag
返回類型: string
用于生成一個(gè)標(biāo)準(zhǔn)的提交按鈕。例如:
echo form_submit('mysubmit', 'Submit Post!');
// Would produce: <input type="submit" name="mysubmit" value="Submit Post!" />
和其他的函數(shù)一樣,如果你想添加額外的屬性的話,可以傳一個(gè)關(guān)聯(lián)數(shù)組給第一個(gè)參數(shù), 第三個(gè)參數(shù)可以向表單添加額外的數(shù)據(jù),例如 JavaScript 。
form_reset([$data = ''[, $value = ''[, $extra = '']]])
參數(shù):
返回: An HTML input reset button tag
返回類型: string
用于生成一個(gè)標(biāo)準(zhǔn)的重置按鈕。用法和 form_submit() 函數(shù)一樣。
form_button([$data = ''[, $content = ''[, $extra = '']]])
參數(shù):
返回: An HTML button tag
返回類型: string
用于生成一個(gè)標(biāo)準(zhǔn)的按鈕,你可以簡(jiǎn)單的使用名稱和內(nèi)容來(lái)生成按鈕:
echo form_button('name','content');
// Would produce: <button name="name" type="button">Content</button>
或者使用一個(gè)關(guān)聯(lián)數(shù)組,來(lái)包含任何你想要的數(shù)據(jù):
$data = array(
'name' => 'button',
'id' => 'button',
'value' => 'true',
'type' => 'reset',
'content' => 'Reset'
);
echo form_button($data);
// Would produce: <button name="button" id="button" value="true" type="reset">Reset</button>
如果你還希望能包含一些額外的數(shù)據(jù),譬如 JavaScript ,你可以通過(guò)第三個(gè)參數(shù)傳一個(gè)字符串:
$js = 'onClick="some_function()"';
echo form_button('mybutton', 'Click Me', $js);
form_close([$extra = ''])
參數(shù):
返回: An HTML form closing tag
返回類型:string
用于生成結(jié)束標(biāo)簽 ,使用這個(gè)函數(shù)唯一的一個(gè)好處是, 它可以在結(jié)束標(biāo)簽的后面加上一些其他的數(shù)據(jù)。例如:
$string = ''; echo form_close($string); // Would produce:
set_value($field[, $default = ''[, $html_escape = TRUE]])
參數(shù):
返回: Field value
返回類型: string
用于你顯示 input 或者 textarea 類型的輸入框的值。你必須在第一個(gè)參數(shù)中指定名稱, 第二個(gè)參數(shù)是可選的,允許你設(shè)置一個(gè)默認(rèn)值,第三個(gè)參數(shù)也是可選,可以禁用對(duì)值的轉(zhuǎn)義, 當(dāng)你在和 form_input() 函數(shù)一起使用時(shí),可以避免重復(fù)轉(zhuǎn)義。
例如:
<input type="text" name="quantity" value="<?php echo set_value('quantity', '0'); ?>" size="50" />
當(dāng)上面的表單元素第一次加載時(shí)將會(huì)顯示 "0" 。
set_select($field[, $value = ''[, $default = FALSE]])
參數(shù):
返回: 'selected' attribute or an empty string
返回類型: string
如果你使用 下拉菜單,此函數(shù)允許你顯示選中的菜單項(xiàng)。
第一個(gè)參數(shù)為下拉菜單的名稱,第二個(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($field[, $value = ''[, $default = FALSE]])
參數(shù):
返回: 'checked' attribute or an empty string
返回類型: string
允許你顯示一個(gè)處于提交狀態(tài)的復(fù)選框。
第一個(gè)參數(shù)必須包含此復(fù)選框的名稱,第二個(gè)參數(shù)必須包含它的值, 第三個(gè)參數(shù)是可選的,用于設(shè)置復(fù)選框是否為默認(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($field[, $value = ''[, $default = FALSE]])
參數(shù):
返回: 'checked' attribute or an empty string
返回類型: string
允許你顯示那些處于提交狀態(tài)的單選框。 該函數(shù)和上面的 set_checkbox() 函數(shù)一樣。
例如:
<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'); ?> />
注解
如果你正在使用表單驗(yàn)證類,你必須為你的每一個(gè)表單域指定一個(gè)規(guī)則, 即使是空的,這樣可以確保 set*() 函數(shù)能正常運(yùn)行。 這是因?yàn)槿绻x了一個(gè)表單驗(yàn)證對(duì)象,set*() 函數(shù)的控制權(quán)將移交到表單驗(yàn)證類, 而不是輔助函數(shù)函數(shù)。
form_error([$field = ''[, $prefix = ''[, $suffix = '']]])
參數(shù):
返回: HTML-formatted form validation error message(s)
返回類型: string
從 表單驗(yàn)證類 返回驗(yàn)證錯(cuò)誤消息, 并附上驗(yàn)證出錯(cuò)的域的名稱,你可以設(shè)置錯(cuò)誤消息的起始和結(jié)束標(biāo)簽。
例如:
// Assuming that the 'username' field value was incorrect:
echo form_error('myfield', '<div class="error">', '</div>');
// Would produce: <div class="error">Error message associated with the "username" field.</div>
validation_errors([$prefix = ''[, $suffix = '']])
參數(shù):
返回: HTML-formatted form validation error message(s)
返回類型: string
和 form_error() 函數(shù)類似,返回所有 表單驗(yàn)證類 生成的錯(cuò)誤信息,你可以為為每個(gè)錯(cuò)誤消息設(shè)置起始和結(jié)束標(biāo)簽。
例如:
echo validation_errors('<span class="error">', '</span>');
/*
Would produce, e.g.:
<span class="error">The "email" field doesn't contain a valid e-mail address!</span>
<span class="error">The "password" field doesn't match the "repeat_password" field!</span>
*/
form_prep($str)
參數(shù):
返回: Escaped value
返回類型: string
允許你在表單元素中安全的使用 HTML 和譬如引號(hào)這樣的字符,而不用擔(dān)心對(duì)表單造成破壞。
注解
如果你使用了這個(gè)頁(yè)面上介紹的任何一個(gè)函數(shù),表單的域值會(huì)被自動(dòng)轉(zhuǎn)義, 所以你無(wú)需再調(diào)用這個(gè)函數(shù)。只有在你創(chuàng)建自己的表單元素時(shí)需要使用它。
注解
該函數(shù)已經(jīng)廢棄,現(xiàn)在只是 通用函數(shù) html_escape() 的一個(gè)別名,請(qǐng)使用 html_escape() 代替它。
更多建議: