在Code Igniter中更容易填充表单数据和验证数据?

Joh*_*ohn 5 php validation codeigniter

我是代码点火器的新手.我正在按照http://www.codeignitor.com/user_guide/libraries/validation.html上的表单验证教程进行操作

我发现我在视图中输入的内容过多,无法重新填充表单.例如,这是我的一个INPUT字段的样子:

<input type="text" name="email" value="<?=$this->validation->email ? $this->validation->email : $array_db_values['email'] ?>" />
Run Code Online (Sandbox Code Playgroud)

基本上,当表单首次加载时,它应该显示数据库中的值.如果用户更改了值并且验证失败,则表单应该发布错误提交的值.

代码点火器是否有一种"更清洁"的方式来呈现这种输出?否则,我将在我的控制器中执行以下操作:

$array_db_values = getdbresults();
if($_POST['submit'])
foreach($_POST as $key=>$val)
$array_db_values[$key] = $val;
Run Code Online (Sandbox Code Playgroud)

这样,如果存在回发数据,它将始终覆盖数据库值.

然后我视图中的输入字段可以简单地是:

<input type="text" name="email" value="<?=$array_db_values['email'] ?>" />
Run Code Online (Sandbox Code Playgroud)

是否有更好的/本地CI方式来处理这种情况?

Ali*_*xel 4

我认为不存在更简单的方法,IMO 的最佳方法是在控制器中执行类似的操作:

if (isset($_POST['submit']))
{
    $values = $_POST;
}

else
{
    $values = getdbresults();
}
Run Code Online (Sandbox Code Playgroud)

简而言之,不需要循环遍历 $_POST 数组:

$values = (isset($_POST['submit'])) ? $_POST : getdbresults();
Run Code Online (Sandbox Code Playgroud)

在你看来,你也做了同样的事情:

<input type="text" name="email" value="<?=$values['email'] ?>" />
Run Code Online (Sandbox Code Playgroud)

或者使用表单助手

echo form_input('email', $values['email']);
Run Code Online (Sandbox Code Playgroud)