我有一个小网站,允许用户在表单中输入值,然后直接提交或将字段值存储在模板中以便稍后提交。要稍后提交表单,他可以加载以前保存的模板。为此,有三个按钮加载模板 / 保存模板 / 提交表单。
因为我正在使用Codeigniter的表单验证内置功能,当我想用以前存储过的模板填充表单时遇到问题。
表单字段都设置为
$name = array(
'name' => 'name',
'id' => 'name',
'value' => set_value('name', $form_field_values['name'])
);
变量$form_field_values
保存加载模板时加载模板的值或首次加载表单时的默认值。
最初,表单加载了默认值。当我点击加载模板时,set_value()
不会选择模板中的值,因为之前有默认值。我想要的是将表单字段的值替换为模板中的值。
您是否知道如何以干净的方式做到这一点?我所做的是引入一个变量来完全跳过对set_value()
的调用:
$name= array(
'name' => 'name',
'id' => 'name',
'value' => $skip_form_validation ? $form_field_values['name'] : set_value('name', $form_field_values['name'])
);
其中$skip_form_validation
是控制器中设置的变量,基于按下的按钮。跳过表单验证以保存/加载模板。
答案 0 :(得分:1)
Codeigniter的set_value()函数是一个简单的函数,如果找到值,则在$ _POST中查找值,然后返回else返回第二个参数,您可以删除set_value()并为其编写自己的代码。如果要填充POST数据的值或添加要添加的任何值,可以编写$ _POST ['field_name'] 就这样使用
$name = array(
'name' => 'name',
'id' => 'name',
'value' => $valueFromYourTemplate
);
如果您不想在表单中设置POST值,则无需使用set_value()函数
答案 1 :(得分:0)
假设您检索数据库字段并将它们传递给控制器中的数据数组。
$record = $this->data_model->get_record(array('uid' => $user_id), 'users');
if (!is_null($record)) {
$data['uname'] = $record->username;
$data['loc'] = $record->location;
}
其中'users'是数据库表,uid是表用户的id字段。
在您的表单中,执行此类操作
希望它有所帮助!