0

我试图弄清楚如何处理我有一个 MY_Controller、Backend_Controller 的情况,当然后端扩展了 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);
    }
}
4

3 回答 3

0

如果您的意思是您需要从后端控制器访问变量到登录控制器,因为您正在扩展Backend_Controllerin Login_Controller,您可以这样做: in 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"

你的意思是这样的吗。

于 2013-01-07T03:30:44.463 回答
0

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

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

或者

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

此外,如果它只代理,则不需要构造函数parent::__construct()

于 2013-01-07T03:30:51.443 回答
0

因为 MY_ 前缀默认由 Codeigniter 加载,并且非前缀控制器不需要包含对 backend_controller 类的引用,如下所示:

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

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

类登录扩展 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);
} }
于 2013-01-07T08:02:12.737 回答