首页 > 解决方案 > 如何将类变量传递给codeigniter中的视图?

问题描述

我有类似以下代码的内容:

class Abc extends CI_Controller {
  public $data; 

public function step1()
{
    $this->load->model('modelA');
    $modelT = new functionInsideModel();
    $data['1'] = $modelT -> F1();
    $data['2'] = $modelT -> F2();
    $data['3'] = $modelT -> F3();
    $this->load->view('header');
    $this->load->view('step1',$data);
    $this->load->view('footer');
}
public function step2()
{
    if(isset($_POST['submit']))
    {
        $this->data['step1Check'] = true;
        $this->load->view('header');
        $this->load->view('step2');
        $this->load->view('footer');
    }


}

}

在步骤 1 中编译表格后,客户继续进行步骤 2。我需要实现一个类变量$data['step1'],所以如果这个变量为真,那就意味着step1中的表单已经完成,step1视图会有所不同。

所以,step2中的客户想要点击step1查看插入的信息是否正常,因为客户已经在step2中$data['step1']为真,step1视图会有所不同。

$data 变量是一个类变量,所以它在控制器的 step1() 函数中是“可见的”,但我不能在 step1 视图中使用它。

我该如何解决这个问题?

标签: phpcodeigniter

解决方案


我会这样做

class Abc extends CI_Controller {
  public $data; 

public function step1()
{
    $this->data['step1Check'] = (isset($_SESSION['step1Check']) && $_SESSION['step1Check']);
    $this->load->model('modelA');
    $modelT = new functionInsideModel();
    $data['1'] = $modelT -> F1();
    $data['2'] = $modelT -> F2();
    $data['3'] = $modelT -> F3();
    $this->load->view('header');
    $this->load->view('step1',$this->data);
    $this->load->view('footer');
}
public function step2()
{
    if(isset($_POST['submit']))
    {
        $_SESSION['step1Check'] = true;
        $this->load->view('header');
        $this->load->view('step2');
        $this->load->view('footer');
    }


}
}

这样,您可以将其保存在会话中,并在第 1 步的下一次加载中使用它,这不会给您任何警告。您还需要在 codeiginiter 的配置中启动会话驱动程序。

然后在您的视图中使用只需使用$step1Check


推荐阅读