我正在试图弄清楚如何处理我有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);
}
}
答案 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); } }