Codeigniter:如何构建使用表单验证和重新填充的编辑表单?

时间:2010-04-29 10:55:45

标签: validation codeigniter

我在codeigniter中有一个简单的表单,我希望用它来编辑或记录。 我处于显示表单的阶段,值输入相应的输入框。

这可以通过简单地将所述框的值设置为视图中的任何内容来完成:

<input type="text" value="<?php echo $article['short_desc'];?>" name="short_desc" />

但是,如果我希望在codeigniter中使用form_validation,那么我必须将代码添加到我的标记中:

<input value="<?php echo set_value('short_desc')?>" type="text" name="short_desc" />

因此,如果需要在发布数据的错误中重新填充,则不能使用set_value函数设置该值。

有没有办法将两者结合起来,以便我的编辑表单可以显示要编辑的值,还可以重新填充?

由于

1 个答案:

答案 0 :(得分:19)

如果没有任何重新填充的话,

set_value()实际上可以为默认值采用第二个参数(至少查看CI版本1.7.1和1.7.2)。请参阅Form_validation.php库中的以下内容(第710行):

/**
 * Get the value from a form
 *
 * Permits you to repopulate a form field with the value it was submitted
 * with, or, if that value doesn't exist, with the default
 *
 * @access  public
 * @param   string  the field name
 * @param   string
 * @return  void
 */ 
function set_value($field = '', $default = '')
{
    if ( ! isset($this->_field_data[$field]))
        {
            return $default;
        }

        return $this->_field_data[$field]['postdata'];
}

因此,考虑到这一点,您应该能够简单地将默认值传递给set_value,如下所示:

<input value="<?php echo set_value('short_desc', $article['short_desc'])?>" type="text" name="short_desc" />

如果没有值重新填充,set_value()将默认为$article['short_desc']

希望有所帮助。