Codeigniter - 表单验证未显示错误消息

时间:2017-06-29 01:32:47

标签: php codeigniter

我试图验证我的input字段之一,但它似乎不适用于我的字段。我尝试使用session->flashdataredirect将错误发送到my_view.php页面以发送session

这是我的代码:

my_view.php

<body>
<?php
    $field_error = $this->session->flashdata('fields');
?>
<h1>HELLO WORLD</h1>

<input type="text" name="login[name]" class="fname" placeholder="First">
 <?php if (isset($field_error['login[name]'])) { ?>
                                <span class="help-block"><?php echo $field_error['login[name]']; ?></span>
                            <?php } ?>
<br>

<button id="send">Save</button>
</body>

my_controller.php

       public function __construct(){
    parent::__construct();
    $this->load->model('my_model');
    $this->load->helper('url');
    $this->load->library('session');
    $this->load->library('form_validation');
}
public function index()
{
    $this->load->view('my_view');
}        

        $this->form_validation->set_rules('login[name]', 'First Name', 'required');

        if ($this->form_validation->run() == FALSE){    
                    $this->session->set_flashdata('fields', $this->form_validation->error_array());


                    redirect(site_url('my_controller'));

                    exit();
                }

4 个答案:

答案 0 :(得分:0)

加载目标视图,如下所示:

$this->load->view('any_directory/view_name');

或者

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

答案 1 :(得分:0)

由于您使用的是redirect(),因此将刷新flashdata。您可以使用$this->load->view('my_view'); 或者下面描述的方法:

在控制器的验证中执行此操作:in your if condition.

$this->form_validation->set_rules('login[name]', 'First Name', 'required');

        if ($this->form_validation->run() == FALSE)
        {          
            $this->load->view('my_view'); //removing your flashdata,codeigniter provides it's validation method to show errors in your view.
        }

并在视图

<body>
<h1>HELLO WORLD</h1>

<input type="text" name="login[name]" class="fname" placeholder="First">
 <?= validation_errors(); ?>
<br>

<button id="send">Save</button>
</body>    

答案 2 :(得分:0)

不讨论您的实施,您的主要问题是您的表单代码需要包含在<form> </form>中或使用表单助手<?php echo form_open(); ?>

<body>
<?php $field_error = $this->session->flashdata('fields');
?>
<h1>HELLO WORLD</h1>
<form method="post">
    <input type="text" name="login[name]" class="fname" placeholder="First">
    <?php if (isset($field_error['login[name]'])) { ?>
        <span class="help-block"><?php echo $field_error['login[name]']; ?></span>
    <?php } ?>
    <br>
    <button id="send">Save</button>
</form>
</body>

您可以通过对var_dump()print_r()等内容执行$this->input->post()$this->session->flashdata()来发现此类事情;所以你实际上可以看到发生了什么......

在这种情况下,您需要能够使用上述内容进行调试......

答案 3 :(得分:0)

**You should use**
codeigniter redirect in controller
redirect(url, 'refresh');
and 
use the form_error method to your view
<?php echo form_error('field name','<span class="help-block form-error">', '</span>'); ?>