代码点火器::包括?

时间:2010-11-17 12:14:51

标签: php codeigniter include

我是代码点火器的新手,我仍在学习最佳实践。

在我的网站中,我有两个菜单,

一个用于登录的用户。

一个用于退出的用户。

我在views文件夹中有两个文件。

我的问题是:

我应该怎么做呢?

我最好的猜测是

在控制器调用中

if($loggedin)
  $menu = $this->load->view('loggedin', true);
else
  $menu = $this->load->view('loggedout', true);
$this->load->view('main', array('menu' => $menu));

所以基本上将正确的菜单代码传递到视图中并回显出来。

有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

你可以打破严格的MVC并在你看来有这样的东西:

<?php
// in your controller or when the user logs in:
$this->session->set_userdata('logged_in', 'true');
?>

你的观点:

<?php
  // Logged in?
  if ( ! $this->session->userdata('logged_in') {
      $this->load->view('loggedout');
  } else {
      $this->load->view('loggedin');
  }
?>

记住MVC是一个概念,它不是一成不变的。

答案 1 :(得分:1)

您可以在函数中加载任意数量的视图。例如:

if($loggedin){
  $this->load->view('loggedin');
} else {
  $this->load->view('loggedout');
}

$this->load->view('main');

使它更清洁但可能忽略了效率。

答案 2 :(得分:0)

我建议你使用插件。

将其放入插件

if($loggedin)
  $menu = $this->load->view('loggedin', true);
else
  $menu = $this->load->view('loggedout', true);