codeigniter中的set_value没有响应

时间:2013-01-02 08:08:40

标签: codeigniter codeigniter-2

我是codeigniter的新手,我正在尝试用户指南中的教程。但我只是陷入了一个地方。在表单验证的代码中。我正在尝试使用set_value属性的示例,但我的用户文本框没有返回任何内容。

在我看来,我添加了以下代码:

<?php echo validation_errors();?>
<?php echo form_open('form');?>
<table border="0">
<tr>
    <td><h5>Username</h5></td>
    <td><input type="text" name="username" value="" size="50" value="<?php echo set_value('username'); ?>" /></td>
</tr>
<tr>
    <td><h5>Password</h5></td>
    <td><input type="password" name="password" value="" size="50" accept=" <?php echo set_value('password'); ?>" /></td>
</tr>
<tr>
    <td><h5>password Confirm</h5></td>
    <td><input type="password" name="passconf" value="" size="50"  /></td>
</tr>
<tr>
    <td><h5>Email Addres</h5></td>
    <td> <input type="text" name="email" value="" size="50" accept="<?php echo set_value('email'); ?>" /></td>
</tr>
<tr>
    <td>&nbsp;</td>
    <td><div><input type="submit" value="Submit" /></div></td>
</tr>
</table>
</form>

在我的控制器中添加了以下代码:

function index()
{
    $this->load->helper(array('form', 'url'));

    $this->load->library('form_validation');

    $this->form_validation->set_rules('username','username','required|min_length[5]|max-length[10]|xss_clean');
    $this->form_validation->set_rules('password','password','required');
    $this->form_validation->set_rules('passconf','password confirmation','required');
    $this->form_validation->set_rules('email','email','required');

    if ($this->form_validation->run() == FALSE)
    {
        $this->load->view('myform');
    }
    else
    {
        $this->load->view('formsucces');
    }
}

提前谢谢你。

3 个答案:

答案 0 :(得分:3)

输入类型中有两个值属性..

试试这个......

<td><input type="text" name="username" size="50" value="<?php echo set_value('username'); ?>" /></td>

答案 1 :(得分:0)

CI和表单验证存在一些问题......

您需要自己的帮助程序,其中从指定字段的POST数组中获取值,以便您可以重新填充输入字段或textarea。如果表单验证处于活动状态,它将从验证类

中检索信息
if (!function_exists('set_value')) {
    function set_value($field = '', $default = '') {
            $OBJ = & _get_validation_object();

            if ($OBJ === TRUE && isset($OBJ->_field_data[$field])) {
                    return form_prep($OBJ->set_value($field, $default));
            } else {
                    if (!isset($_POST[$field])) {
                            return $default;
                    }
                    return form_prep($_POST[$field]);
            }
    }

}

答案 2 :(得分:0)

此解决方案正常,最佳答案。顺便说一下,

之间有什么区别
<?php echo set_value('field_name'); ?>

<?php echo @$_POST['field_name']; ?>