Неустранимая ошибка: вызов функции-члена set_rules () - PullRequest
3 голосов
/ 12 февраля 2012

Я получаю следующую ошибку в строке 17 Fatal error: Call to a member function set_rules() on a non-object

У меня есть библиотека form_validation при автозагрузке.

    public function login()
    {
            $this->form_validation->set_rules('userName','userName', 'required|valid_email|trim|max_length[99]|xss_clean');
            $this->form_validation->set_rules('userPassword','userPassword', 'required|trim|max_length[200]|xss_clean|callback__checkUser');

            if($this->form_validation->run() === TRUE) {
            // set CLEAN data in the session.
                redirect('admin/dashboard');
            }else{

            $this->index();
        }
    }

Контроллер

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Login extends CI_Controller {


    public function index()
    {
        $data['companyName'] = $this->core_model->companyName();
        $data['pageTitle'] = "Administration Login";
        $this->load->view('admin/assets/header', $data);
        $this->load->view('admin/login.php', $data);
        $this->load->view('admin/assets/footer');
    }

    public function login()
    {
            $this->form_validation->set_rules('userName','userName', 'required|valid_email|trim|max_length[99]|xss_clean');
            $this->form_validation->set_rules('userPassword','userPassword', 'required|trim|max_length[200]|xss_clean|callback__checkUser');


            if($this->form_validation->run() === TRUE) {
            // set CLEAN data in the session.
                redirect('admin/dashboard');
            }else{

            $this->index();
        }
    }

    function _checkUser(){ // Private function 
        extract($_POST);

        $login = $this->admin_model->check_login($userName,$userPassword,$userGroup,$userEmail,$userActive);

        if(! $login){
            $this->session->set_flashdata('login_error', TRUE); 
            $this->form_validation->set_message('_checkUser','Sorry your %s is not correct');

            return FALSE;

    }else{
        if($user->userGroup == "admin" && $user->userActive == "yes")
        {
        $this->session->set_userdata('logged_in', TRUE);
        $this->session->set_userdata('userID', $user->id);
        $this->session->set_userdata('userName',$user->userName);
        $this->session->set_userdata('firstName',$user->userFirstName);
        $this->session->set_userdata('lastName',$user->userLastName);
        $this->session->set_userdata('userEmail',$user->userEmail);
        $this->session->set_userdata('userGroup',$user->userGroup);
        $this->session->set_userdata('userActive',$user->userActive);
        }else{
        $this->session->set_flashdata('login_error', TRUE); 
        $this->form_validation->set_message('_checkUser','Sorry your %s is not correct');

        return FALSE;
    }

    }

    }
}

/* End of file login.php */
/* Location: ./application/controllers/admin/login.php */

Ответы [ 6 ]

11 голосов
/ 12 февраля 2012

Вы забыли написать конструктор?

class Login extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->library('form_validation');
    }    

    ...
3 голосов
/ 22 марта 2012

Попробуйте проверить файл модели.

У меня с вами та же ошибка, и когда я ее проверяю, я пишу в классе моей модели

Class Mymodel extends CI_Controller

И когда я перехожу в

Class Mymodel extends CI_Model

Проблема решена

1 голос
/ 12 февраля 2012

Вы не загружаете библиотеку проверки формы.Включите

$this->load->library('form_validation');

в метод или конструктор вашего класса.Кроме того, вы можете загрузить его, отредактировав application / config / autoload.php .

Изменить

$autoload['libraries'] = array();

на

$autoload['libraries'] = array('form_validation');
0 голосов
/ 26 июня 2015

загрузить библиотеки form_validation в файл application / config / autoload.php

0 голосов
/ 12 февраля 2012

Из учебника CodeIgniter Ссылка : Вы должны добавить

$this->load->library('form_validation');

для загрузки библиотеки.

0 голосов
/ 12 февраля 2012

$this->form_validation->set_rules не существует в классе, в котором вы находитесь. Это тот класс, который вы сделали сами?Это расширяет CI_Controller?

У меня нет большого опыта работы с КИ, но, как сказано выше, «он пытается сказать вам, что $ this-> form_validation не является объектом» в текущемкласс.

Обновление:

Вам необходимо загрузить библиотеку:

$this->load->library('form_validation');

http://codeigniter.com/user_guide/libraries/form_validation.html#thecontroller

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...