代码之家  ›  专栏  ›  技术社区  ›  Hailwood

代码点火器:包括?

  •  0
  • Hailwood  · 技术社区  · 15 年前

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

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

    一个用于登录的用户。

    一个用于注销的用户。

    我把这些放在视图文件夹的两个文件中。

    我的问题是:

    我该怎么做呢?

    我的最佳猜测是

    在控制器调用中

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

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

    有更好的方法吗?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Ross    15 年前

    您可以打破严格的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是一个概念,它不是一成不变的。

        2
  •  1
  •   Matt Asbury    15 年前

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

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

    使其更清洁,但可能忽略效率节省。

        3
  •  0
  •   Edmhs    15 年前

    我建议你使用插件。

    把这个放到插件里

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