在 Codeigniter 中填充表单数据和验证数据的更简单方法?
Posted
技术标签:
【中文标题】在 Codeigniter 中填充表单数据和验证数据的更简单方法?【英文标题】:Easier way to populate form data and validation data in Code Igniter? 【发布时间】:2011-01-11 10:28:20 【问题描述】:我是代码点火器的新手。我正在关注在以下位置找到的表单验证教程: 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'] ?>" />
基本上,当表单首次加载时,它应该显示来自数据库的值。如果用户更改了值并且验证失败,那么表单应该发布错误提交的值。
代码点火器是否有一种“更清洁”的方式来呈现这种输出?否则,我将在我的控制器中执行类似的操作:
$array_db_values = getdbresults();
if($_POST['submit'])
foreach($_POST as $key=>$val)
$array_db_values[$key] = $val;
这样,如果回发数据存在,它将始终覆盖数据库值。
那么我认为输入字段可以简单地是:
<input type="text" name="email" value="<?=$array_db_values['email'] ?>" />
是否有更好的/本地 CI 方法来处理这种情况?
【问题讨论】:
一条评论。您应该使用新的表单验证库。 【参考方案1】:我认为没有更简单的方法,IMO 最好的方法是在你的控制器中做这样的事情:
if (isset($_POST['submit']))
$values = $_POST;
else
$values = getdbresults();
无需循环遍历 $_POST 数组,简称:
$values = (isset($_POST['submit'])) ? $_POST : getdbresults();
在你看来,你也是这样做的:
<input type="text" name="email" value="<?=$values['email'] ?>" />
或使用Form helper:
echo form_input('email', $values['email']);
【讨论】:
【参考方案2】:你们研究过 Datamapper Overzealous 项目吗?
http://www.overzealous.com/dmz/
它在模型级别处理验证。在您的表单字段中,您可以将值设置为来自模型(来自数据库或来自您之前的帖子)。
<input type='text' name='email' value='<?=$object->data_item ?>' />
我对 CodeIgniter 也很陌生,但是添加这个库让事情变得更加容易。该项目还带有一个表单扩展,可以真正让事情变得更容易,但我还没有玩太多。
【讨论】:
【参考方案3】:我做的和你做的一模一样。这有点麻烦,但恕我直言。
【讨论】:
【参考方案4】:我对处理表单也有同样的感受,请在 Ignited Code 论坛中查看 macigniter 的表单库。它节省了大量时间,而且写得非常好。
【讨论】:
直接链接会很有用。 如果有人正在寻找 miamisoftware 的回答中提到的 macigniter 的表单生成库,它就在这里:codeigniter.com/forums/viewthread/107861以上是关于在 Codeigniter 中填充表单数据和验证数据的更简单方法?的主要内容,如果未能解决你的问题,请参考以下文章
codeigniter 覆盖表单助手中的 set_value 函数,使用 MY_helper 在获取时重新填充字段,同时发布