codeigniter表单验证错误消息不显示

时间:2013-09-02 12:50:13

标签: php forms codeigniter validation

当我加载模型并从表中获取行时,我的表单验证错误不会在视图文件中显示消息。这是我的代码。

        $this->form_validation->set_rules('bookCategoryId', 'Book SubCategory Id', 'trim|required');
        $this->form_validation->set_rules('bookSubCategoryId', 'Book SubCategory Id', 'trim|required');
        $this->form_validation->set_rules('bookSubCategoryName', 'Book SubCategory Name', 'trim|required');
if ($this->form_validation->run() == FALSE) {
        /* Load Model */
        $this->load->model('book_category');

        /* Get Categories */
        $template_data['mainContentData']['book_categories'] = $this->book_category->get_all_categories();

        /* set view page to be called  */
        $template_data['mainContent'] = 'admin_add_book_subcategory';

        /* Load Template */
        $this->template($template_data);
    }

如果我排除这两行

,我的表单可以正常工作
        /* Load Model */
        $this->load->model('book_category');

        /* Get Categories */
        $template_data['mainContentData']['book_categories'] = $this->book_category->get_all_categories();

比我的验证显示错误。我不知道问题在哪里?

3 个答案:

答案 0 :(得分:6)

您应该使用validation_errors功能

<?php echo validation_errors(); ?>

文档3.x:validation_errors

文档2.x:form_validation

答案 1 :(得分:0)

尝试将其更改为:

        $this->load->model('Book_category');

        /* Get Categories */
        $template_data['mainContentData']['book_categories'] = $this->Book_category->get_all_categories();

根据CI文档对模型首字母大写

参考:http://ellislab.com/codeigniter/user-guide/general/models.html

这是来自他们的参考页面:

模型类存储在application / models /文件夹中。如果您想要这种类型的组织,它们可​​以嵌套在子文件夹中。

模型类的基本原型是:

class Model_name extends CI_Model {

    function __construct()
    {
        parent::__construct();
    } 
} 

其中Model_name是您的类的名称。类名必须首字母大写,其余名称小写。确保您的类扩展了基础Model类。

文件名将是您的班级名称的小写版本。例如,如果你的课是这样的:

class User_model extends CI_Model {

    function __construct()
    {
        parent::__construct();
    } 

}

您的文件将是:

application/models/user_model.php Loading a Model

通常会在控制器功能中加载和调用模型。要加载模型,您将使用以下函数:

$this->load->model('Model_name');

答案 2 :(得分:0)

试试这个......

    /* Load Model */
    $this->load->model('book_category');

    /* Get Categories */
    $template_data['mainContentData']['book_categories'] = $this->book_category->get_all_categories();

    /* set view page to be called  */
    $template_data['mainContent'] = 'admin_add_book_subcategory';


    $this->form_validation->set_rules('bookCategoryId', 'Book SubCategory Id', 'trim|required');
    $this->form_validation->set_rules('bookSubCategoryId', 'Book SubCategory Id', 'trim|required');
    $this->form_validation->set_rules('bookSubCategoryName', 'Book SubCategory Name', 'trim|required');

if ($this->form_validation->run()) {

        print_r($_POST); exit;
    }            
        /* Load Template */
  $this->template($template_data);