Php 我应该使用set_value()在CodeIgniter中重新填充表单吗

Php 我应该使用set_value()在CodeIgniter中重新填充表单吗,php,forms,codeigniter,Php,Forms,Codeigniter,我的问题是我是否应该使用set_value()来重新填充表单。这样说似乎有些奇怪,但是我正在创建一个共享控制器函数和视图,它可以用于添加新记录或编辑现有记录。这样做似乎是有道理的,因为功能非常相似 因此,如果调用现有记录进行编辑,我将执行以下操作: $data['fields'] = $this->customer_model->get_customer($id); 如果提交表单是为了保存记录,或者如果我们是第一次添加记录,那么如果用户出错,表单可能会重新加载,因此我用以下方式填充

我的问题是我是否应该使用set_value()来重新填充表单。这样说似乎有些奇怪,但是我正在创建一个共享控制器函数和视图,它可以用于添加新记录或编辑现有记录。这样做似乎是有道理的,因为功能非常相似

因此,如果调用现有记录进行编辑,我将执行以下操作:

$data['fields'] = $this->customer_model->get_customer($id);
如果提交表单是为了保存记录,或者如果我们是第一次添加记录,那么如果用户出错,表单可能会重新加载,因此我用以下方式填充$data['fields']:

$data['fields'] = array(
    'company' => $this->input->post('company') ?: '',
    'website' => $this->input->post('website') ?: '',
    'credit_limit' => $this->input->post('credit_limit') ?: ''
);
我的表单元素如下所示:

<input type="text" name="company" value="<?php echo set_value('company', $fields['company']); ?>"  />
<input type="text" name="company" value="<?php echo escape_html($fields['company']); ?>"  />

如果要在表单验证错误返回时填充表单字段或插入数据以进行编辑操作,我建议您使用以下帮助程序:

用法

<input type="text" name="last_name" value="<?=vset_value('last_name','',$rs);?>">

如果你喜欢这种方式,请告诉我。我可以提供更多表单输入类型,如select、checkbox等。

正如CodeIgniter文档中提到的,这种方法是正确的。事实上,您不需要在set_value中包含第二个参数

设置值定义:

string set_value(string $field = '', string $default = '')

//$field: If there is a submitted field with this name, its value is returned.
//$default: If there is no matching submitted field, this value is returned.
是的,你应该

 set_value() is used to re-populate a form has failed validation. 
  There is no additional filtering on it,  so it faster.

 But, I prefer some times to use $this->input->post() for the secure.

我认为这种方法没有问题,我在我的大多数项目中都使用相同的方法…我也不知道是否有任何“规则”反对它…使用set_value()form helper函数的唯一好处是
简化设置已提交值的值
,以便重新显示它,我更喜欢使用表单帮助器set_value(),因为您希望使用相同的表单来添加新记录和编辑现有记录。此外,当提交的值仍将通过服务器端的codeIgniter form_validation()预设规则传递时,使用escape_html()也没有太大的理由。
 set_value() is used to re-populate a form has failed validation. 
  There is no additional filtering on it,  so it faster.

 But, I prefer some times to use $this->input->post() for the secure.