1

我是 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');
    }
}

先感谢您。

4

3 回答 3

3

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

试试这个...

<td><input type="text" name="username" size="50" value="<?php echo set_value('username'); ?>" /></td>
于 2013-01-02T08:41:39.777 回答
0

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

您需要自己的助手从 POST 数组中获取指定字段的值,以便您可以重新填充输入字段或文本区域。如果表单验证处于活动状态,它会从验证类中检索信息

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]);
            }
    }

}

于 2013-01-02T20:50:22.430 回答
0

该解决方案有效,最佳答案。顺便说一句,两者有什么区别

<?php echo set_value('field_name'); ?>

<?php echo @$_POST['field_name']; ?>
于 2013-12-14T23:42:50.677 回答