>我有如下代码:
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'],所以如果这个变量是真的,这意味着步骤1中的表单已经完成,step1视图将不同。
因此,步骤 2 中的客户想要单击步骤 1 以查看输入的信息是否正常,因为客户已经在步骤 2 中,因此 $data['step1'] 为真,并且步骤 1 视图将有所不同。
$data变量是一个类变量,因此它在控制器的 step1(( 函数中是"可见的",但我不能在 step1 视图中使用它。
如何解决此问题?
我会这样做
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 的下一次加载中使用它,这不会给您任何警告。 此外,您还需要在代码识别器的配置中启动会话驱动程序。
然后,要在视图中使用,只需使用$step1Check
首先,我建议你将$data
实例化为对象或数组。
之后,您将使用函数view
的第二个参数将数据数组传递给视图模板。
$data = array(
'title' => 'My Title',
'heading' => 'My Heading',
'message' => 'My Message'
);
$this->load->view('header', $data);
$this->load->view('step2', $data);
$this->load->view('footer', $data);
在您的视图中,您可以使用视图 php 文件中的以下命令访问数组/对象中的数据,而无需在其前面$data
:
// $data['title']
echo $title;
// $data['heading']
echo $heading;
// $data['message']
echo $message;