【问题标题】:Easier way to populate form data and validation data in Code Igniter?在 Codeigniter 中填充表单数据和验证数据的更简单方法?
【发布时间】: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 方法来处理这种情况?

【问题讨论】:

  • 一条评论。您应该使用新的表单验证库。

标签: php codeigniter validation


【解决方案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 的表单库。它节省了大量时间,而且写得非常好。

        【讨论】:

        猜你喜欢
        • 2012-07-12
        • 2010-10-27
        • 1970-01-01
        • 2010-11-10
        • 2015-11-07
        • 1970-01-01
        • 2013-04-09
        • 2017-05-21
        • 1970-01-01
        相关资源
        最近更新 更多