Codeigniter - 如何从数据库填充表单?

时间:2012-11-24 12:25:18

标签: php forms validation codeigniter

我有一个小网站,允许用户在表单中输入值,然后直接提交或将字段值存储在模板中以便稍后提交。要稍后提交表单,他可以加载以前保存的模板。为此,有三个按钮加载模板 / 保存模板 / 提交表单

因为我正在使用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是控制器中设置的变量,基于按下的按钮。跳过表单验证以保存/加载模板。

2 个答案:

答案 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字段。

在您的表单中,执行此类操作

希望它有所帮助!