首页 > 解决方案 > 自动加载 form_validation 库

问题描述

form_validation在 Codeigniter 中自动加载库时遇到问题。我有一个Posts带有创建功能的控制器,效果很好。

public function create(){
       $data['title']='New Post';

              $this->load->view('templates/header');
              $this->load->view('posts/create', $data);
              $this->load->view('templates/footer');   
}

现在我想做表单验证。像这样的东西:

public function create(){
       $data['title']='New Post';
       $this->form_validation->set_rules('title', 'Title','trim|required|min_length[5]|max_length[128]');
       $this->form_validation->set_rules('body', 'Blog','trim|required|min_length[5]');
       if($this->form_validation->run==FALSE){
              $data['errors']=validation_errors();
              $this->load->view('templates/header');
              $this->load->view('posts/create', $data);
              $this->load->view('templates/footer');   
       }else {
              $this->load->view('templates/header');
              $this->load->view('posts/success', $data);
              $this->load->view('templates/footer'); 
       }
}

现在我没有调用任何model来存储数据,只是通过加载posts/success视图显示成功消息。但是,即使在我使用验证(即上面的代码)编写创建函数之前,我添加的那一刻form_validationautoload.php即使是第一个代码)就像这样:

$autoload['libraries'] = array('database','form_validation');

我收到以下错误:

消息:未定义的属性:Post_model::$load

文件名:库/Form_validation.php

行号:147

回溯:

文件:C:\xampp\htdocs\ciblog\index.php 行:292 功能:require_once

我不明白这个错误,因为我什至没有使用Post_modelin the method 。

Post_model.php的是:

class Post_model extends CI_Controller {
public function get_post($slug=NULL){
   if(!$slug) {
     $query = $this->db->get('posts');  
     return  $query->result();

  } else {
     $this->db->where('slug',$slug);
     $query = $this->db->get("posts");
     return $query->result();
  }
 } 
}

我完整的后控制器是这样的:

<?php
class Posts extends CI_Controller {
public function index(){
    $data['title']='Latest Posts';
    $posts=$this->post_model->get_post();
    $data['posts']=$posts;
    $this->load->view('templates/header');
    $this->load->view('posts/index',$data);
    $this->load->view('templates/footer');
}
public function view($slug){
    $posts=$this->post_model->get_post($slug);
    if(empty($posts)){
        show_404();
    } else {
       $data['posts']=$posts;
       $this->load->view('templates/header');
       $this->load->view('posts/view',$data);
       $this->load->view('/templates/footer');
    }   
}
public function create(){
       $data['title']='New Post';
       $this->form_validation->set_rules('title', 'Title','trim|required|min_length[5]|max_length[128]');
       $this->form_validation->set_rules('body', 'Blog','trim|required|min_length[5]');
       if($this->form_validation->run()==FALSE){
              $data['errors']=validation_errors();
              $this->load->view('templates/header');
              $this->load->view('posts/create', $data);
              $this->load->view('templates/footer');   
       }else {
              $this->load->view('templates/header');
              $this->load->view('posts/success', $data);
              $this->load->view('templates/footer'); 
       }
   }
}

我已经自动加载了正在工作的模型。我搜索了其他帖子,大多数都与模型名称的第一个字母没有大写有关,这不是我的情况。有人可以让我明白出了什么问题吗?

标签: codeigniter

解决方案


您在控制器中使用了模型而没有加载它,您必须先加载它:

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

这里的另一个错误是模型扩展CI_Model

class Post_model extends CI_Model

推荐阅读