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方式来处理这种情况?
我认为不存在更简单的方法,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)