表单辅助函数

表单辅助函数包含的函数辅助表单运行.

加载表单辅助函数

表单辅助函数使用下文的代码加载:

helper('form');

换码(转义)字段值

你也许需要使用 HTML 和字符像在你的表单内部的元素里引用。为了安全地执行,你将需要使用:doc:common function <../general/common_functions> esc().

考虑下文的示例:

$string = 'Here is a string containing "quoted" text.';

<input type="text" name="myfield" value="$string; ?>" />

由于上面字符串包含一套引用,那将导致表单中断。 The esc() 函数转换 HTML 特殊字节以便它能安全地使用:

<input type="text" name="myfield" value="$string); ?>" />

注解

如果你在页面使用任意表单辅助函数列举,并且你传达像组合的数组一样的值,表单值将会被自动换码,所以不需要调用这个函数。使用它只有你要创建你自己的将要传达作为字符串的表单元素。

通用函数

接下来的函数是通用的:

form_open([$action = ''[, $attributes = ''[, $hidden = array()]]])
参数:
  • $action (string) – 表单行为/目标 URI 字符串
  • $attributes (mixed) – HTML 属性,就像数组或者换码字符串
  • $hidden (array) – 隐藏字段的定义的一组数组An array of hidden fields’ definitions
返回:

HTML 表单随时可用的 tag

返回类型:

string

创建一个带着基地址URL的随时可用的表单标签**从你的配置优先选择营造**. 它将随意地让你添加表单属性和隐藏输入字段,并且会常常在你的配置文件里添加基于 charset 值的 accept-charset 属性。

宁可使用标签的绝对好处也不要艰苦的编码你自己的 HTML 是由于在事件里你的 URLs 曾改变而标签容许你的网址是更便携的。

下面是一则简单的例子:

echo form_open('email/send');

上面的例子将创建一个指向你的基地址 URL 和 “email/send” URL 部分的表单,像这样:

<form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send">

You can also add {locale} like the following:

echo form_open('{locale}/email/send');

The above example would create a form that points to your base URL plus the current request locale with “email/send” URI segments, like this:

<form method="post" accept-charset="utf-8" action="http://example.com/index.php/en/email/send">

添加属性

由正传达组合的数组到第二个参数的属性能被加入,像这样:

$attributes = ['class' => 'email', 'id' => 'myform'];
echo form_open('email/send', $attributes);

二选一地,你能明确的像字符串一样说明第二个参数:

echo form_open('email/send', 'class="email" id="myform"');

上文的例子将会创建一个同样的表单相似于下文这个事例:

<form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send" class="email" id="myform">

If CSRF filter is turned on form_open() will generate CSRF field at the beginning of the form. You can specify ID of this field by passing csrf_id as one of the $attribute array:

form_open(‘/u/sign-up’, [‘csrf_id’ => ‘my-id’]);

will return:

添加隐藏输入字段

由正传达组合的数组到第三个参数的隐藏字段能被添加,像这样:

$hidden = ['username' => 'Joe', 'member_id' => '234'];
echo form_open('email/send', '', $hidden);

由正传达的任何false值到隐藏字段,你能忽略第二个参数.

上面的事例将创建类似于下面的句子:

<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 = ''[, $hidden = array()]]])
参数:
  • $action (string) – 表单行为/目标 URI 字符串
  • $attributes (mixed) – HTML 属性,就像数组或者换码字符串
  • $hidden (array) – 隐藏字段的定义的一组数组
返回:

HTML 多部件的表单随时可用的 tag

返回类型:

string

这个函数对上文的 form_open() 来说是类似的, 除了它附加了一个 multipart 属性,如果你喜欢使用表单上传文件这个属性是必须的。

form_hidden($name[, $value = ''])
参数:
  • $name (string) – 字段名
  • $value (string) – 字段值
返回:

HTML 隐藏输入字段 tag

返回类型:

string

让你生成隐藏输入字段。你也能提交名称/值字符串去创建一个字段:

form_hidden('username', 'johndoe');
// 将产生: 

… 或者你能提交组合数组去创建复合字段:

$data = [
        'name'  => 'John Doe',
        'email' => 'john@example.com',
        'url'   => 'http://example.com'
];

echo form_hidden($data);

/*
        将产生:
        
        
        
*/

你也能传达组合的数组给字段值:

$data = [
        'name'  => 'John Doe',
        'email' => 'john@example.com',
        'url'   => 'http://example.com'
];

echo form_hidden('my_array', $data);

/*
        将产生:

        
        
        
*/

倘若你想创建额外属性的隐藏输入字段:

$data = [
        'type'  => 'hidden',
        'name'  => 'email',
        'id'    => 'hiddenemail',
        'value' => 'john@example.com',
        'class' => 'hiddenemail'
];

echo form_input($data);

/*
        将产生:

        
*/
form_input([$data = ''[, $value = ''[, $extra = ''[, $type = 'text']]]])
参数:
  • $data (array) – 字段属性数据
  • $value (string) – 字段值
  • $extra (mixed) – 额外属性被添加到 tag 任何一方像数组或者文字字符串
  • $type (string) – 输入字段类型。例如: ‘text’, ‘email’, ‘number’, 等等.
返回:

HTML 文本输入字段 tag

返回类型:

string

让你生成标准的文本输入字段。你能最低程度地在第一和第二参数里传达字段名和值:

echo form_input('username', 'johndoe');

或者你能传达包含你希望你的表单要包含的任何数据的组合的数组:

$data = [
        'name'      => 'username',
        'id'        => 'username',
        'value'     => 'johndoe',
        'maxlength' => '100',
        'size'      => '50',
        'style'     => 'width:50%'
];

echo form_input($data);

/*
        将产生:

        
*/

如果你想要你的表单包含一些额外的数据,像 JavaScript ,你能在第三参数里像字符串一样传达参数:

$js = 'onClick="some_function()"';
echo form_input('username', 'johndoe', $js);

或者你能像数组一样传达参数:

       $js = ['onClick' => 'some_function();'];
       echo form_input('username', 'johndoe', $js);

支持HTML5 输入字段扩充范围,你能像第四个参数一样传达一个输入键入信息::

       echo form_input('email', 'joe@example.com', ['placeholder' => 'Email Address...'], 'email');

       /*
               将产生:

               
       */
form_password([$data = ''[, $value = ''[, $extra = '']]])
参数:
  • $data (array) – 字段属性数据
  • $value (string) – 字段值
  • $extra (mixed) – 额外的属性被添加到tag任何一方像数组或者文字的字符串
返回:

HTML 密码输入字段 tag

返回类型:

string

此函数除了函数使用的 “password” 输入类型在完全关系到上文所述的 form_input() 函数是完全相似的。

form_upload([$data = ''[, $value = ''[, $extra = '']]])

:param array $data:字段属性数据 :param string $value:字段值 :param mixed $extra: 额外的属性被添加到 tag 任何一方像数组或者文字的字符串 :returns: HTML 文件上传输入字段 tag :rtype: string

此函数除了使用 “file” 输入类型在完全关系到上文所述的 form_input() 函数是完全相似的,接受函数适用于上传文件。

form_textarea([$data = ''[, $value = ''[, $extra = '']]])
参数:
  • $data (array) – 字段属性数据
  • $value (string) – 字段值
  • $extra (mixed) – 额外的属性被添加到 tag 任何一方像数组或者文字的字符串
返回:

HTML 文本区域 tag

返回类型:

string

此函数除了产生 “textarea” 类型外在完全关系到上文所述的 form_input() 函数是完全相似的。

注解

上文的例子里代替 maxlengthsize 属性,你会更换具体指定的 rowscols

form_dropdown([$name = ''[, $options = array()[, $selected = array()[, $extra = '']]]])
参数:
  • $name (string) – 字段名
  • $options (array) – 选项的组合的数组被列举
  • $selected (array) – 字段的列表要标明 selected 属性
  • $extra (mixed) – 额外的属性被添加到 tag 任何一方像数组或者文字的字符串
返回:

HTML 下拉菜单选择字段 tag

返回类型:

string

让你创建一个下拉菜单字段。第一个参数会包含字段名,第二个参数会包含一个组合的数组选项,而第三参数会包含你希望被选择的值。你也能通过第三参数传达一个符合选项数组,并且辅助函数会为你创建一个复合选项。

例如:

       $options = [
               'small'  => 'Small Shirt',
               'med'    => 'Medium Shirt',
               'large'  => 'Large Shirt',
               'xlarge' => 'Extra Large Shirt',
       ];

       $shirts_on_sale = ['small', 'large'];
       echo form_dropdown('shirts', $options, 'large');

       /*
               将产生:

               
       */

       echo form_dropdown('shirts', $options, $shirts_on_sale);

       /*
               将产生:

               
       */

如果你想要开始部分的 <select> 包含额外的数据,像 id 属性或者 JavaScript ,你能在第四个参数里像字符串一样传达它::

       $js = 'id="shirts" onChange="some_function();"';
       echo form_dropdown('shirts', $options, 'large', $js);

或者你能像传达数组一样传达参数:

$js = [
        'id'       => 'shirts',
        'onChange' => 'some_function();'
];
echo form_dropdown('shirts', $options, 'large', $js);

如果数组被传达象 $options 一样是一个多维数组,那么 form_dropdown() 将会产生一个像 label 一样带着数组键码的

form_multiselect([$name = ''[, $options = array()[, $selected = array()[, $extra = '']]]])
参数:
  • $name (string) – 字段名
  • $options (array) – 选项的组合数组被列举
  • $selected (array) – 字段的列表要标明 selected 属性
  • $extra (mixed) – 额外的属性被添加到 tag 任何一方像数组或者文字的字符串
返回:

HTML 下拉菜单混合选项字段 tag

返回类型:

string

让你创建一个标准的混合字段。第一个参数将包含字段名,第二个参数会包含选项的一个组合的数组, 而第三个参数会包含值或者你想要被选择的值。

参数用法是完全相似于上文去使用的 form_dropdown() ,除了当然地字段名将需要去用 POST 数组语法,例如:foo[].

form_fieldset([$legend_text = ''[, $attributes = array()]])
参数:
  • $legend_text (string) – Text 放进 tag
  • $attributes (array) – 属性被置位在
    tag 上
返回:

HTML 字段置位开始 tag

返回类型:

string

让你生成 fieldset/legend 字段。

例如:

echo form_fieldset('Address Information');
echo "

fieldset content here

\n"; echo form_fieldset_close(); /* 生成:
Address Information

form content here

*/

相似于其他函数,如果你更喜欢设置额外属性你能在第二参数里提交一个组合的数组:

$attributes = [
        'id'    => 'address_info',
        'class' => 'address_info'
];

echo form_fieldset('Address Information', $attributes);
echo "

fieldset content here

\n"; echo form_fieldset_close(); /* 生成:
Address Information

form content here

*/
form_fieldset_close([$extra = ''])
参数:
  • $extra (string) – 闭合 tag 附加的任何字段, as is
返回:

HTML 字段置位关闭 tag

返回类型:

string

产生一个正关闭的 tag. 使用这个函数仅有的优势是它允许你传达数据给将被添加的下文关联的 tag 。例如

$string = '
'; echo form_fieldset_close($string); // 将生成: