我有两个控制器视图对。我从A_Controller加载带有$ data变量的视图。在带有新控制器(B_Controller)的新视图(B_View)中,我可以访问该数据,但是我也想在视图的控制器(B_Controller)中使用它。反正有访问它吗?
A_Controller
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_Controller
class B_Controller extends CI_Controller {
public function some_function{
$new_variable = $variable; //but I can't access it here :(
}
}
答案 0 :(得分:2)
使用会议
$autoload['libraries'] = array('session');
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)
}
}
class B_Controller extends CI_Controller {
public function some_function{
$new_variable = $this->session->userdata('variable'); //get back variable from session
}
}
希望它会有所帮助:)
答案 1 :(得分:1)
您可以使用codeigniter会话将数据从一个控制器传递到另一个控制器,或使用控制器名称和方法重定向控制器
class B_Controller extends CI_Controller {
public function some_function{
redirect('/A_Controller/index');
$new_variable = $variable;
}
}
通过会话
首先将$ variable设置为Flash数据
class A_Controller extends CI_Controller {
public function index{
$this->load->library('session');
$variable= "some_data";
$data['variable'] = $variable;
$this->session->set_flashdata('variableName', $variable);
$this->load->view('B_View', $data)
}
}
现在将其置于第二个控制器中
class B_Controller extends CI_Controller {
public function some_function{
$new_variable = $this->session->flashdata('variableName');
$new_variable = $variable;
}
}
请注意,我尚未测试此代码,但我认为您可能可以通过此方法获取一些东西。谢谢
答案 2 :(得分:1)
为什么不在控制器中执行
$data['variable'] = "SOME DATA"
,您将能够在<?= $variable; ?>
之类的视图中使用它:)
答案 3 :(得分:1)
如果您尝试传递敏感数据(例如手机号码或个人信息),则我不接受使用会话在控制器功能之间传递数据。如果您有很多变量,并且它们从数据库中获取数据,则最好使用单独的控制器将所需数据加载到函数中。但是请记住不要在此函数中加载任何视图。只需加载所需的数据。如果您的数据获取功能具有很多变量,则可能会影响您的网站加载速度。但是,当您具有单独的功能和要加载数据的控制器时,可以在其他功能中重定向到该控制器,然后访问所需的变量。
class B_Controller extends CI_Controller {
public function some_function{
redirect('/Data_Controller/data_function');
$new_variable = $variable;
}
}
希望这对您的问题有意义。谢谢