在 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 中验证表单下拉列表

codeigniter 覆盖表单助手中的 set_value 函数,使用 MY_helper 在获取时重新填充字段,同时发布

CodeIgniter - 使用重定向重新填充无效表单

CodeIgniter - 表单验证和文件上传数据

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

codeigniter 中的 Ajax 表单验证