我在Codeigniter中自动加载form_validation
库时遇到问题。我有一个控制器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
视图来显示成功消息。然而,即使在我使用验证(即上面的代码)编写create函数之前,我在autoload.php
中添加form_validation
的时刻(即使使用第一个代码)如下所示:
$autoload['libraries'] = array('database','form_validation');
我得到下面的错误:
Message:Undefined property:Post_model::$load
文件名:libraries/Form_validation.php
行号:147
回溯:
File:C:\xampp\htdocs\ciblog\index.php Line:292功能:需要一次(_O)
我不明白这个错误,因为我甚至没有在方法中使用Post_model
。
我的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();
}
}
}
我完整的post控制器是这样的:
<?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');
}
}
}
我已经autoladed模型,这是工作。我搜索了其他职位,大多数是与第一个字母的模型名称不是在帽子,这不是我的情况。有人能让我明白出了什么问题吗?
3条答案
按热度按时间noj0wjuj1#
您在控制器中使用了您的模型而没有加载它,您必须首先加载它:
这里的另一个错误是model扩展了
CI_Model
:bvk5enib2#
正如文档中的ref所述,你必须像这样验证:
我看到了**run()**方法背后的错误
请使用以下命令修复:
if ($this->form_validation->run() == FALSE)
也可以通过更新构造函数直接加载form_validation库进行检查
eyh26e7m3#
如果你正在使用CodeIgniter 4.x,试试这个:
选项1:使用自动加载器
添加“表单”和“url”帮助程序
选项二:使用helper方法
在Controller中添加下面一行-您希望需要form_validation的地方