在codeigniter中从父MY_Controller调用变量

时间:2016-08-03 08:23:38

标签: php global-variables codeigniter-3

我想让我的徽标全球化,以便我可以在我网站的任何地方访问它。为此,我在自定义父控制器MY_Authorization中声明$logo,并且每个类都由此自定义控制器扩展。

但是当我在我的视图中调用$ logo变量时,会发生一个php错误,即未定义的变量:$ logo

defined('BASEPATH') OR exit('No direct script access allowed');
class MY_Authorization extends CI_Controller {
var $logoCont='logo';
    function __construct()
    {
    parent::__construct();
    $CI = & get_instance();
    $CI->load->library('session');
    $CI->load->helper('url');
    if ( !$this->session->userdata('loginuser'))
    { 
        redirect('login');
    }
  }
}

在我看来,我正在调用这样的徽标

  <img src="<?php echo base_url().sprintf("uploads/%s", $logoCont)?>"alt="logo">

2 个答案:

答案 0 :(得分:1)

创建自定义帮助文件并放在帮助文件夹中

  1. 导航至 application / helper
  2. 列表项
  3. 创建新的自定义文件
  4. 示例:my_custom_helper.php

    function logo(){
       $ci = & get_instance();
       $result = $ci->db->query("you custom query here");
       //fetch the logo from database and store in the variable  and return this variable 
       return $result;
    }
    
    1. (application / config / autoload.php)的autoload.php文件中自动加载此帮助程序

    2. 找到变量$autoload['helper'] = array();

    3. $autoload['helper'] = array('my_custom_helper.php);

    4. 添加自定义助手
    5. 现在logo()函数是全局的,并且它在控制器/模型/视图中的任何位置都可用,并且每当在辅助函数中进行更改时,它将影响使用logo()函数的应用程序。

答案 1 :(得分:1)

您的数据未传递到视图。

if ( !$this->session->userdata('loginuser'))
{ 
    ---added this---
    $this->session->set_flashdata('item', 'value');
    // OR $this->session->set_flashdata($data); $data is of type array
    ----------------
    redirect('login');
}

现在您的数据已在会话中设置(并将在下次请求后删除),您可以使用$ this-&gt; session-&gt; flashdata(&#39; item&#39)在视图中访问此数据;)

https://codeigniter.com/user_guide/libraries/sessions.html#flashdata

希望这有帮助。