CodeIgniter调用[库]中非对象的成员函数

时间:2016-01-03 18:03:31

标签: codeigniter

我正在尝试调用自定义库函数,该函数应该将输入的值返回到表单,但我发现错误。 enter image description here

的Controler:

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Guest extends CI_Controller {

public function __construct(){
    parent::__construct();
    error_reporting(E_ALL ^ (E_NOTICE));
    $this->load->helper(array('form', 'url', 'date'));
    $this->load->library('form_validation', 'uri');
    $this->load->model('dayData');
    $this->load->library('session');
    $this->load->library('guest');
}

public function index(){        
    $this->login();
}

public function dataToView($data, $viewFile){
    $this->load->view('template/header');
    if($viewFile != ''){
        $this->load->view('user/' . $viewFile, $data);
    }
    $this->load->view('template/footer');
}

public function login(){
    $this->dataToView($data, 'guest/login');
}

public function registration(){
    if($this->input->post('registrationSubmit') !== null) {

        //$this->form_validation->set_error_delimiters('<div class="alert alert-warning" role="alert">', '</div>');
        $this->config->load('form_validation');
        $this->form_validation->set_rules($this->config->item('registrationValidation'));

        if($this->form_validation->run() == FALSE){
            var_dump($this->guest->registrationPost());
            $this->dataToView($data, 'guest/registration');
        } else {
            echo "string";
        }
    } else {
        $this->dataToView($data, 'guest/registration');
    }
}

}

库:

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Guest {

protected $CI;

public function __construct(){
    // Assign the CodeIgniter super-object
    $this->CI =& get_instance();
    //$this->CI->load->model('Guest');
    $this->CI->lang->load('error', 'english');

}

public function registrationPost(){
    $result = array('name' => $this->CI->input->post('name'),
                    'nickName' => $this->CI->input->post('nickName'),
                    'email' => $this->CI->input->post('email'));
    return $result;
}

}

2 个答案:

答案 0 :(得分:0)

控制器和自定义类之间存在命名冲突。它们不应该有相同的名称。

答案 1 :(得分:0)

您有重复的类名。控制器类名称为Guest,库类名称也为Guest

当CodeIgniter加载Guest库时,它将跳过它并记录调试消息。 https://github.com/bcit-ci/CodeIgniter/blob/develop/system/core/Loader.php#L1032

我建议将您的库重命名为其他内容,也许是Registration