首页 > 解决方案 > 如何从控制器访问视图中的变量值

问题描述

我有两个控制器视图对。我从我的 A_Controller 加载了一个带有 $data 变量的视图。在带有新控制器(B_Controller)的新视图(B_View)中,我可以访问该数据,但我也想在视图的控制器(B_Controller)中使用它。反正有访问它吗?

A_控制器

class A_Controller extends CI_Controller {
   public function index{
      $variable= "some_data";
      $data['variable'] = $variable
      $this->load->view('B_View', $data)
   }
}

B_View

<html>
   <body>
      <!-- I can access it here -->
      <h1><?php echo $variable;?><h1>
   </body>
</html>

B_控制器

class B_Controller extends CI_Controller {
   public function some_function{
      $new_variable = $variable; //but I can't access it here :( 
   }
}

标签: phpcodeigniter

解决方案


使用会话

  1. 在 config/autoload.php 中全局启用会话
$autoload['libraries'] = array('session'); 
  1. 在 A_Controller 中,初始化变量并将其存储在会话中
class A_Controller extends CI_Controller {
   public function index{
      $variable= "some_data";
      $this->session->set_userdata(array('variable'=>$variable)); //store variable in a session
      $data['variable'] = $variable;
      $this->load->view('B_View', $data)
   }
}
  1. 在 B_Controller 中,通过会话获取变量
class B_Controller extends CI_Controller {
   public function some_function{
      $new_variable = $this->session->userdata('variable'); //get back variable from session
   }
}

希望能帮助到你 :)


推荐阅读