php - set_value 不工作

标签 php codeigniter

我在我的 Controller 中加载了 form_validation 库,并且表单验证本身正在运行,但是当使用 set_value() 时,它没有填充表单字段。这是 Controller 中的代码:

function addUser()
{
    $this->form_validation->set_rules('firstName', 'firstname', 'trim|required|max_length[30]');
    $this->form_validation->set_rules('surname', 'surname', 'trim|required|max_length[30]');
    $this->form_validation->set_rules('emailAddress', 'email address', 'trim|required|valid_email|is_unique[users.email]|max_length[255]');
    $this->form_validation->set_rules('password', 'password', 'trim|required|max_length[20]|min_length[5]');
    $this->form_validation->set_rules('passwordVerify', 'password verification', 'trim|required|max_length[20]|min_length[5]');

    if($this->form_validation->run() === FALSE) {
        $this->session->set_flashdata('formValidationError',  validation_errors('<p class="error">', '</p>'));
        redirect('/member/register');
    } else {
        echo 'Passed';
    }
}

下面是 View 中的代码:

    <?php echo $this->session->flashdata('formValidationError'); ?>
<form method="POST" action="<?php echo site_url('member/addUser'); ?>">
    <fieldset>
        <legend>Create a FREE account</legend>
        <div>
            <label for="firstName">Firstname</label>
            <input type="text" name="firstName" value="<?php echo set_value('firstName'); ?>" maxlength="30">
        </div>

        <div>
            <label for="surname">Surname</label>
            <input type="text" name="surname" value="<?php echo set_value('surname'); ?>" maxlength="30">
        </div>

        <div>
            <label for="emailAddress">Email Address</label>
            <input type="text" name="emailAddress" value="<?php echo set_value('emailAddress'); ?>" maxlength="255">
        </div>

        <div>
            <label for="password">Password</label>
            <input type="password" name="password" maxlength="20">
        </div>

        <div>
            <label for="passwordVerify">Verify Password</label>
            <input type="password" name="passwordVerify" maxlength="20">
        </div>

        <button type="submit">Register</button>
    </fieldset>
</form>

有什么我想念的吗?重定向是否导致问题?

最佳答案

它不起作用,因为您正在使用重定向。

代替

    $this->session->set_flashdata('formValidationError',  validation_errors('<p class="error">', '</p>'));
    redirect('/member/register');

只是为了测试,尝试加载 View

    $this->load->view('member_register_view');

你会看到的。

set_value 要求表单验证在相同的上下文中运行...当您重定向时,您将失去此上下文。

关于php - set_value 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141018/

相关文章:

php - WHERE OR 子句无法正常工作

php - 类构造函数创建具有变量名的新类字段?

c# - 在 PHP 中通过 SOAP 发送 Zip 文件

php - 连接两个表以进行全文搜索

javascript - 代码点火器 : echo folder path using php in javascript file

php - 用户名或电子邮件存在时不返回错误

php - 为什么 trim() 会使一个不存在的变量存在?

PHP Codeigniter curl_multi_init 错误

php - 下单管理逻辑

php - 读取特定行或列 - phpExcel