使用模板从控制器传递数据以进行查看

时间:2019-03-14 07:06:56

标签: php codeigniter

控制器:

public function home(){
$data['page_title'] = 'Home';
$data['navbar_content'] = $this->model->get($var);
$data['page_content'] = $this->model->get($var1);

$this->load->view('template/header');
$this->load->view('template/navbar');
$this->load->view('pages/home');
$this->load->view('template/footer');
}

使用上面的示例代码,由于codeigniter仅允许将变量/数据通过数组或对象从控制器传递到视图,那么传递数据的“正确”方法是什么?

我可以在加载标头时简单地传递数据,但一切仍然可以进行。

$this->load->view('template/header', $data);
$this->load->view('template/navbar');
$this->load->view('pages/home');
$this->load->view('template/footer');

但这对我来说似乎不对,例如,我想我希望代码中的内容清晰明了:

$this->load->view('template/header', $title);
$this->load->view('template/navbar', $navbar_content);
$this->load->view('pages/home', $page_content);
$this->load->view('template/footer');

上面的内容很明确,与传递的数据有所区别。

但是由于我无法做到这一点,是否有一种“正确”的方式来做到这一点?还是我想得太多?

我忽略了提及,我可以简单地将2个数组传递给视图。我认为这首先是错误的,因为我将尽力使2个数组通过,以便我可以将单个字符串变量传递给我的标题页。

当然,当我将更多数据传递到导航栏时,这对我来说很有意义。

2 个答案:

答案 0 :(得分:1)

根据文档,这是正确的方法: https://codeigniter.com/userguide3/general/views.html

数据通过视图加载方法的第二个参数中的数组或对象从控制器传递到视图。

您还应该注意: Codeigniter: Best way to structure partial views

您应该按层次结构构建视图。

$this->load->view('template/header', ["title" => $title]);
$this->load->view('template/navbar', ["navbar_content" => $navbar_content]);
$this->load->view('pages/home', ["page_content" => $page_content]);
$this->load->view('template/footer');

答案 1 :(得分:0)

CodeIgniter将数据从控制器传递到视图。

您需要将$data传递给视图。

您将传递一个键为字符串或什至数组(也为多维数组)的数组。

因此,您需要将其传递给您使用的$data的每个视图。

$this->load->view('template/header', $data);
$this->load->view('template/navbar', $data);
$this->load->view('pages/home', $data);
$this->load->view('template/footer', $data);

在您看来,您可以通过键访问$data

例如:

如果您的数据是

$data['header_banner'] = 'Header Banner';

您认为,可以通过以下方式访问此值:

echo $header_banner;

观察到$data中的键,只需添加一个$就可以访问该变量。

PHP内置函数extract()