【问题标题】:CodeIgniter returns "Undefined property: Rubrica::$usuario_model" trying to load function modelCodeIgniter 返回“未定义属性:Rubrica::$usuario_model”试图加载函数模型
【发布时间】:2015-04-22 14:14:33
【问题描述】:

我正在使用 CodeIgniter。在我的“instancia”控制器中,我需要从控制器“rubrica”创建一个实例,以便从中访问一个函数。

instancia.php:

include_once APPPATH.'controllers/controller_ppal.php';
include_once(APPPATH.'controllers/rubrica.php');

class Instancia extends Controller_Ppal
{
    function __construct()
    {
        parent::__construct();
        $this->no_logged_msg = 'Debe estar autenticado en el sistema para acceder a esta opción.';
        $this->no_auth_msg = 'No tiene autorización para acceder aquí.';
        $this->no_partic = 'No ha agregado participantes a la lista aún.';
        $this->datos_inc = 'No ha ingresado todos los datos de al menos uno de los participantes.';

        $this->load->model('instancia_model');
        $this->load->model('usuario_model');
    }

    ...

    function guardar()
    {
        $ext_class = new Rubrica();
        $ext_class->session = $this->session;
        $ext_class->load->model('usuario_model'); //In spite of it is loaded in "__construct" function
        $id_rubrica = $ext_class->guardar();
    }
}

rubrica.php:

include_once APPPATH.'controllers/controller_ppal.php';

class Rubrica extends Controller_Ppal {

    function __construct()
    {
        parent::__construct();

        $this->no_logged_msg = 'Debe estar autenticado en el sistema para acceder a esta opción.';
        $this->no_auth_msg = 'No tiene autorización para acceder aquí.';
        $this->load->model('rubrica_model');
        $this->load->model('tag_model');
        $this->load->model('usuario_model');
    }

    function guardar()
    {
        $_POST['usuarios'] = $this->usuario_model->todos_usuarios($this->session->userdata('id_usuario'));
    }
}

我收到错误消息“未定义属性:Rubrica::$usuario_model”。我已经阅读了几篇文章,但我无法得到解决方案。有人可以帮我吗?

【问题讨论】:

标签: php codeigniter model-view-controller codeigniter-2


【解决方案1】:

如果你有需要在多个控制器之间共享的功能,你应该写一个库。

在应用程序/库中创建 Tools.php(或任何你想要的)

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

class Tools
{
  protected $ci;

    public function __construct()
    {
        $this->ci =& get_instance();
    }

    public function myfunction($data)
    {
       //If you want to use codeigniter's functionalities :
       //use $this->ci->function()
    }

}

然后在你的控制器中:

$this->load->library("tools");
$this->tools->myfunction($data);

如果你的库需要经常使用,你可以在 config/autoload.php 中加载一次:

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

【讨论】:

  • 为什么只有这个模型不起作用?它无法从“rubrica”控制器的新实例中加载。
  • 如何在这个库中加载“usuario_model”模型?
  • 首先加载它:$this-&gt;ci-&gt;load-&gt;("usuario_model") 然后调用你的模型函数:$this-&gt;ci-&gt;usuario_model-&gt;myfunction($data);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多