set_value не работает - PullRequest
       2

set_value не работает

2 голосов
/ 04 февраля 2012

У меня в контроллере загружена библиотека form_validation, и сама проверка формы работает, но при использовании set_value () она не заполняет поля формы.Вот код в контроллер:

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';
    }
}

А вот код в представлении:

    <?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>

Что-то мне не хватает?Перенаправление вызывает проблему?

Ответы [ 2 ]

6 голосов
/ 04 февраля 2012

Не работает, потому что вы используете перенаправление.

Вместо

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

только для тестирования, попробуйте загрузить представление

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

и выувидим.

set_value требует, чтобы проверка формы выполнялась в том же контексте ... вы теряете этот контекст при перенаправлении.

2 голосов
/ 03 февраля 2013

У меня была такая же проблема с redirect(), я использовал $this->session->set_flashdata('field','value') для хранения данных перед перенаправлением, так как загрузка представления была невозможна в моем случае, и повторно использовал его как значение входного тега,<input type='text' value='<?= $this->session->flashdata('field') ?>' >

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...