0

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

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

4

2 回答 2

1

Codeigniter 的 set_value() 函数是一个简单的函数,它在 $_POST 中查找值,如果找到值然后返回 else 返回第二个参数,您可以删除 set_value() 并为其编写自己的代码。如果要填充 POST 数据的值或添加要添加的任何值,可以编写 $_POST['field_name'] 就像这样使用

$name = array(
    'name'  => 'name',
    'id'    => 'name',
    'value' => $valueFromYourTemplate
);

如果您不想在表单中设置 POST 值,则不需要使用 set_value() 函数

于 2012-11-24T12:36:35.477 回答
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 字段。

在你的表格中,做这样的事情

希望能帮助到你!

于 2013-04-03T20:54:22.803 回答