控制器类使用来自其他类的变量

时间:2013-01-07 03:04:31

标签: php codeigniter

我正在试图弄清楚如何处理我有MY_Controller,Backend_Controller的情况,当然Backend扩展了MY,我还有其他控制器,如Login和其他扩展后端的小型控制器。我的问题是,如果您在登录控制器上发现它需要能够访问后端控制器内的变量吗?如何在这种情况下使用该变量?

在后端控制器中我有这个:

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

class Backend_Controller extends MY_Controller
{
    function __construct ()
    {
        parent::__construct();

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

        $cms_template = $this->config->item('cms_template');

        $this->data['template'] = $cms_template;
    }
}

这是登录控制器:

<?php 

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

class Login extends Backend_Controller 
{
    public function __construct()
    {
        parent::__construct();  
    }    

    public function index()
    {   
        $js_page_addons = '<script src="'.base_url().'assets/' .$cms_template. '/js/validation/login_form.js"></script>';

        $page_view = 'login_view';

        $this->data['js_page_addons'] = $js_page_addons;
        $this->data['page_view'] = $page_view;
        $this->load->view('cms/' . $cms_template . '/usermanagement/index_view', $this->data);
    }
}

3 个答案:

答案 0 :(得分:0)

如果您的意思是需要从后端控制器访问变量到登录控制器,因为您要扩展Backend_Controller中的Login_Controller,您可以: 在 Backend_Controller ::

public function __construct() {
   parent::__construct();  
   $this->some_backend_var = "some_value_here";
   //OR
   ci()->some_backend_var = $this->some_backend_var = "some_value_here";
}

并且在登录控制器中有一些功能,您可以使用:

echo $this->some_backend_var; //shows "some_value_here"

你的意思是这样吗。

答案 1 :(得分:0)

如果您指的是$cms_template,您应该可以通过以下几种方式之一来实现。假设$data数组和$config属性都不是private,请尝试

$cms_template = $this->config->item('cms_template');

$cms_template = $this->data['template'];

此外,如果只代理parent::__construct()

,则不需要构造函数

答案 2 :(得分:0)

因为默认情况下,Codeigniter会加载MY_前缀,而非前缀控制器则不需要包含对backend_controller类的引用,如下所示:

  

     

if(!defined('BASEPATH'))退出('不允许直接访问脚本');

     

include_once(APPPATH。'controllers / backend_controller.php');

     

类登录扩展Backend_Controller {       公共函数_ construct()       {           父:: _construct();
      }

public function index()
{   
    $js_page_addons = '<script src="'.base_url().'assets/' .$cms_template. '/js/validation/login_form.js"></script>';

    $page_view = 'login_view';

    $this->data['js_page_addons'] = $js_page_addons;
    $this->data['page_view'] = $page_view;
    $this->load->view('cms/' . $cms_template . '/usermanagement/index_view', $this->data);
} }