如何在CodeIgniter中使用框架内置方法编写form表单标签
CodeIgniter 框架自带表单标签实现方法
首先你需要先加载框架的表单辅助函数,所有框架封装的表单方法都依赖这个扩展,有两种加载方式可选:
- 临时加载:在需要渲染表单的控制器方法中加入代码
$this->load->helper('form');,仅当前方法生效 - 全局加载:打开配置文件
application/config/autoload.php,将form添加到$autoload['helper']配置项的数组中,全局可用无需重复加载
核心表单标签写法
不需要手写原生<form>标签,直接调用框架封装的方法即可,方法会自动生成符合规范的HTML标签,开启CSRF防护时还会自动插入对应的隐藏验证字段。
表单起止标签
- 普通表单起始标签使用
form_open()方法,第一个参数传表单提交的目标路由地址,第二个参数传标签属性数组,默认提交方法为post,自动拼接正确的项目路径:
// 生成的HTML等价于 <form action="你的项目域名/index.php/user/login" method="post" accept-charset="utf-8" id="loginForm" class="form-horizontal"> echo form_open('user/login', ['id' => 'loginForm', 'class' => 'form-horizontal']);
- 如果是需要上传文件的表单,直接用
form_open_multipart()替代form_open(),方法会自动加上enctype="multipart/form-data"属性,无需手动配置 - 表单闭合标签直接调用
form_close()即可,无需手写</form>:
echo form_close();
常用表单控件封装
框架同时封装了所有常用表单控件的生成方法,无需手写原生input标签:
- 普通文本输入框:
form_input($name, $默认值, $属性数组),对应<input type="text"> - 密码输入框:
form_password($name, $默认值, $属性数组),对应<input type="password"> - 单选按钮:
form_radio($name, $值, $是否默认选中, $属性数组),对应<input type="radio"> - 复选框:
form_checkbox($name, $值, $是否默认选中, $属性数组),对应<input type="checkbox"> - 下拉选择框:
form_dropdown($name, $选项数组, $默认选中值, $属性数组),对应<select>标签 - 多行文本域:
form_textarea($name, $默认值, $属性数组),对应<textarea>标签 - 提交按钮:
form_submit($name, $按钮文字, $属性数组),对应<input type="submit"> - 标签文本:
form_label($显示文字, $绑定控件id, $属性数组),对应<label>标签
注意:所有表单辅助函数的返回值是标签字符串,必须用
echo输出才能渲染到页面中。
完整示例
一个简单的登录表单写法参考:
// 表单起始 echo form_open('user/doLogin', ['id' => 'loginForm', 'class' => 'mt-4']); // 用户名项 echo form_label('用户名', 'username', ['class' => 'form-label']); echo form_input('username', set_value('username'), ['class' => 'form-control', 'id' => 'username', 'placeholder' => '请输入用户名']); // 密码项 echo form_label('密码', 'password', ['class' => 'form-label mt-3']); echo form_password('password', '', ['class' => 'form-control', 'id' => 'password', 'placeholder' => '请输入密码']); // 提交按钮 echo form_submit('loginBtn', '登录', ['class' => 'btn btn-primary w-100 mt-4']); // 表单闭合 echo form_close();
这种写法和框架的表单验证类、CSRF防护、输入回填功能(set_value()等方法)完全适配,比手写原生表单更适配框架的运行逻辑。
内容的提问来源于stack exchange,提问作者user15226011
相关产品推荐
相关产品推荐

