Codeigniter - отображение ошибки формы под полем ввода

Я пытаюсь отобразить ошибку формы под полями ввода, но после того, как я нажму кнопку отправки, он будет перенаправлен на другую страницу...

Вот мой контроллер кодовой страницы

<?php
    defined('BASEPATH') OR exit('No direct script access allowed');

    class Pages extends CI_Controller{

        public function view($page = 'home'){
            if(!file_exists(APPPATH.'views/pages/'.$page.'.php')){
                show_404();
            }
            $data['title'] = ucfirst($page);

            $this->load->view('template/header');
            $this->load->view('pages/'.$page);
            $this->load->view('template/footer');
        }

        public function login(){
            echo $this->input->POST('username');
        }

        public function registercheck(){

            echo $this->input->POST('username');
            echo $this->input->POST('pwd');
            echo $this->input->POST('pwd2');
            echo $this->input->POST('fname');
            echo $this->input->POST('position');
            echo $this->input->POST('contactnumber');

            $this->form_validation->set_rules('username', 'USERNAME', 'required|max_lenght[20]');
            $this->form_validation->set_rules('pwd', 'USERNAME', 'required|max_lenght[20]');
            $this->form_validation->set_rules('pwd2', 'UPPERCASE', 'required|max_lenght[20]');
            $this->form_validation->set_rules('fname', 'USERNAME', 'required|max_lenght[20]');
            $this->form_validation->set_rules('position', 'USERNAME', 'required|max_lenght[20]');
            $this->form_validation->set_rules('contactnumber', 'USERNAME', 'required|max_lenght[20]');

            if($this->form_validation->run() == false){
                $this->load->view('pages/register');
            } else{
                echo 'register ok';
            }                   
        }
    }
?>

И вот мои взгляды /pages/register.php

<form action="<?php echo base_url(); ?>pages/registercheck" method="post">
    <input type="text" class="form-control" id="username" name="username" value="<?php echo set_value('username'); ?>" >
    <?php if (form_error('username')) { ?>
        <span class="help-block"><?php echo form_error('username');  ?> </span>
    <?php } ?>

    <input type="text" class="form-control" id="username" name="username" value="<?php echo set_value('username'); ?>" >
    <?php  if (form_error('username')) { ?>
        <span class="help-block"><?php echo form_error('username');  ?> </span>
    <?php } ?>
</form>

Пожалуйста, помогите мне.. Что я делаю не так?

Заранее спасибо!

1 ответ

Вы в правильном направлении. Но чтобы добиться желаемого функционала, нужно сделать так:

Форма и проверка ввода должны быть на одной странице (контроллер). В вашем примере оба должны быть в register.php,

Этот базовый псевдокод должен помочь:

On register page controller:
    If method == get:
        Display register form.
    If method == post:
        Check the form data:
        If errors exists:
            display register page with error.
        else:
            redirect to ....

Удачи!

Другие вопросы по тегам