如何在Codeigniter中获得验证错误?

时间:2018-11-15 08:03:25

标签: php codeigniter codeigniter-3

您好,我正在向数据库中插入数据。当我同时插入类别和描述时,然后插入数据,但是当我没有在类别和描述输入中插入并单击创建时,然后在空白页面admin / category / register_category中没有错误显示时,我想显示该类别和描述字段不应为空。

category.php视图页面如下:

<?php if(isset($_SESSION['success'])){ ?>
    <div class="alert alert-success"><?php echo $_SESSION['success']; ?> 
    </div>
<?php } ?>
<?php echo validation_errors('<div class="alert alert-danger">','</div>'); ?>

<form class="form" action="<?php echo site_url('admin/category/register_category') ?>" method="POST">
    <label for="contactinput5">Category Name</label>
    <input class="form-control border-primary" type="text" placeholder="category" name="category" id="contactinput5">
    <label for="contactinput5">Discription</label>
    <textarea class="form-control border-primary" type="text" placeholder="discription" name="discription" id="contactemail5"></textarea>
    <button type="submit" name="create" class="btn btn-primary">

,我的控制器Category.php页面是:

<?php
class Category extends CI_Controller {
    function index() {
        $this->load->view('admin/category');
    }

    function register_category() {      
        $this->form_validation->set_rules('category', 'Category', 'required');
        $this->form_validation->set_rules('discription', 'Discription', 'required');
        if($this->form_validation->run() == TRUE){
            echo "form validate";
            $this->load->model('categories');
            $insert_category = $this->categories->validate();
            if($insert_category){
                $this->session->set_flashdata("success","Your data has been added");
                redirect("admin/category","refresh");
            }
            else{
                redirect('admin/category');
            }
        }
    }
}
?>  

模型类别页面:

<?php
class Categories extends CI_Model
{
     function validate()
    {
        $arr['categoryname'] =  $this->input->post('category');
        $arr['discription'] =   $this->input->post('discription');
        return $this->db->insert('category',$arr);      
    }
}
?>

5 个答案:

答案 0 :(得分:1)

嘿,谢谢,我只需输入以下代码即可得到答案

if($this->form_validation->run() == FALSE)
{
    $this->index();
}

答案 1 :(得分:1)

您好,请更新控制器中的功能。验证条件中存在问题将 TURE 更改为 FALSE 。检查以下代码。

function register_category()
    {       
        $this->form_validation->set_rules('category', 'Category', 'required');
        $this->form_validation->set_rules('discription', 'Discription', 'required');

        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('category');
        }
        else
        {
            $this->load->model('categories');
            $insert_category = $this->categories->validate();

            if($insert_category)
            {
                $this->session->set_flashdata("success","Your data has been added");
                redirect("admin/category","refresh");
            }
            else
            {
                redirect('admin/category');
            }
        }
    }

答案 2 :(得分:0)

如果验证结果不正确,则可以从$this->form_validation->error_array()中获取错误,循环返回数组并将错误显示给用户。

希望获得帮助。

答案 3 :(得分:0)

Get all post validation errors in controller :
echo validation_errors();

If you want to show at the end of textbox use this following method :

<label for="contactinput5">Category Name</label>
<input class="form-control border-primary" type="text" placeholder="category" name="category" id="contactinput5">
<?php echo form_error('category', '<div class="error">', '</div>'); ?>

答案 4 :(得分:0)

仅供参考,您的解决方案仅能起作用,因为validation_errors()仅适用于 current 实例。当您重定向时,该信息将丢失。您将不得不将其存储在会话变量中,或者这很常见(将表单操作更改为self或留空):

function index() {
        if ($_POST) {
            $this->form_validation->set_rules('category', 'Category', 'required');
            $this->form_validation->set_rules('discription', 'Discription', 'required');
            if($this->form_validation->run() == TRUE){
                $this->load->model('categories');
                $insert_category = $this->categories->validate();
                if($insert_category){
                    $this->session->set_flashdata("success","Your data has been added");
                }
            }
        }
        $this->load->view('admin/category');
    }

当然,如果您可以更改网址,您的方法也可以使用。