【问题标题】:Codeigniter - Passing data from MY_Controller to Main_controller to viewCodeigniter - 将数据从 MY_Controller 传递到 Main_controller 以查看
【发布时间】:2026-01-07 20:15:01
【问题描述】:

这是完整的代码(我想通过设置在 MY_Controller 上的变量来选择视图): 我想传递该变量,但它没有“达到”它给我的视图 $ses_group = "not_logged_in" 带有测试回显,我没有在 MY_Controller 上设置任何内容

class MY_Controller extends CI_Controller {
protected $special_data = array();
public function __construct()
{
    parent::__construct();
}
function index() {
if (logged_in() == TRUE)
{
if (in_group('users'))
{
    $this->special_data['ses_group'] = 'users';
}elseif (in_group('empresas'))
{
    $this->special_data['ses_group'] = 'empresas';
}elseif (in_group('admin'))
{
    $this->special_data['ses_group'] = 'admin';
}else{
    //  $this->special_data['ses_group'] = 'not_logged_in';
}
}
return $this->special_data;
}

Main_Controller:

function index(
$data = array(
                    'ses_group' => $this->special_data
            );
            $this->load->view('auth/descricao_anuncio', $data);
)

观点:

<?php if($ses_group="not_logged_in"){ ?>
<li><a href="<?php echo base_url("login/login")?>" class="">Login</a></li>


<?php  }elseif($ses_group="users"){ ?>

<li><a href="<?php echo base_url("users_controller/edit_user")?>">Your Area</a></li>
<li><a href="<?php echo base_url("login/logout")?>">Logout</a></li>


<?php  }elseif($ses_group="empresas"){  ?>

<li><a href="<?php echo base_url("empresas_controller/edit_empresa")?>">Empresa</a></li>
<li><a href="<?php echo base_url("login/logout")?>">Logout</a></li>

<?php  }?>

echo $ses_group;

再次感谢!

【问题讨论】:

  • 这里的问题是我需要将一个变量从父类传递给一个chld类并且不能正确

标签: codeigniter class controllers


【解决方案1】:

控制器

 <?php

class MY_Controller extends CI_Controller {

protected $special_data = array();

 function MY_Controller ()  {
        parent::Controller();
    }

function special_data($val)
{
if(a){
$this->special_data['ses_group'] = 'users';
}elseif(b){
$this->special_data['ses_group'] = 'companies';
}else{
$this->special_data['ses_group'] = 'admin';
}
return $this->special_data;// return value of the function
}

}

您可以在您的MY_Controller 中使用$this-&gt; 将您的值从控制器发送到视图

控制器

 class Main_controller extends MY_Controller {
      function  __construct()  {
        parent::MY_Controller();
    }


      $this->data['group']= $this->special_data['ses_group'];// call function and pass parameter
      $this->load->view('view_x', $this->data);

}

观看次数

<?php echo $group; ?>

【讨论】:

    【解决方案2】:

    这是你需要的吗

    控制器

        class MY_Controller extends CI_Controller {
    
        protected $special_data = array();
    
    function special_data($val)
    {
    if($val=="a"){
    $this->special_data = 'users';
    }elseif($val=="b"){
    $this->special_data = 'companies';
    }else{
    $this->special_data = 'admin';
    }
    return $this->special_data;// return value of the function
    }
    }
    
    class Main_controller extends MY_Controller {
    
    
           function __construct()
        {
       parent::__construct();
    
        }
    
    
    public function index()
        {
    
        $data = array(
    
                        'group' => $this->special_data('a')
                );
    
                $this->load->view('view_x', $data); 
       }
    
    }
    

    查看

    <?php echo $group; ?>
    

    【讨论】:

    • 是的,但是我需要 if 语句并且需要它通过 Main_Controller
    • if(a){...}elseif(b){}中的a和b是什么
    • 把代码倒过来后,现在可以了。基本错误。谢谢
    最近更新 更多