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

入力タイプには 2 つの値属性があります。

これを試して...

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

このソリューションは機能しています。ベストアンサーです。ちなみに違いは

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

<?php echo @$_POST['field_name']; ?>
于 2013-12-14T23:42:50.677 に答える
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 に答える