0

MY_Controller、Backend_Controller があり、もちろん Backend が MY を拡張し、Login などの他のコントローラーや Backend を拡張する他の小さなコントローラーがある状況を処理する方法を見つけようとしています。私の質問は、ログイン コントローラーで、バックエンド コントローラー内の変数にアクセスできるようにする必要があることに気付いた場合です。この場合、その変数を使用するにはどうすればよいですか?

バックエンドコントローラーには次のものがあります:

<?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";
}

ログインコントローラーの some function では、次を使用して取得できます。

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');

class Login extends Backend_Controller { public function _ 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);
} }
于 2013-01-07T08:02:12.737 に答える