codeigniter - 自动加载 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_validation
(autoload.php
即使是第一个代码)就像这样:
$autoload['libraries'] = array('database','form_validation');
我收到以下错误:
消息:未定义的属性:Post_model::$load
文件名:库/Form_validation.php
行号:147
回溯:
文件:C:\xampp\htdocs\ciblog\index.php 行:292 功能:require_once
我不明白这个错误,因为我什至没有使用Post_model
in 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');
}
}
}
我已经自动加载了正在工作的模型。我搜索了其他帖子,大多数都与模型名称的第一个字母没有大写有关,这不是我的情况。有人可以让我明白出了什么问题吗?
解决方案
您在控制器中使用了模型而没有加载它,您必须先加载它:
$this->load->model('post_model');
这里的另一个错误是模型扩展CI_Model
:
class Post_model extends CI_Model
推荐阅读
- c# - 无法将类型“对象”隐式转换为“Microsoft.Office.Interop.Excel.Worksheet”
- variables - 如何处理密码中的引号。PowerShell foreach 循环
- java - 以相同的方式解析文件和命令行选项
- extjs - 当我们单击网格列即单击网格列时,自定义日期排序不起作用
- reactjs - 将主题合并到 react-minimal-pie-chart 中不起作用
- django - 未找到 gunicorn 静态文件
- javascript - 为什么我的 3D 模型没有使用 glTF 加载器在 three.js 中加载?
- xsl-fo - XSL-FO 到 PDF 的翻译产生了意想不到的结果
- angular - 在 Angular 2 应用程序中存储和跟踪私人聊天消息的最佳方式
- c# - 使用 Skype 机器人进行音频通话