带有编码器的动态导航菜单


Dynamic navigation menu with codeigniter

我在项目中工作,我使用Codeigniter PHP框架编码,我想做的是,我想做一个动态导航菜单,一个普通菜单的客人Home - Register - Login ...和另一个菜单的注册用户options menu and so on ...

这是我的头模板的代码:

<?php
  if($this->session->userdata('logged_in'))
  {
    $session_data = $this->session->userdata('logged_in');
    $data['username'] = $session_data['username'];
?>
<ul class="nav navbar-nav navbar-right">
  <li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Hey, <?php echo $data['username']; ?></a>
    <ul class="dropdown-menu">
      <a href="<?php echo base_url(); ?>/login/logout">Déconnexion</a>
    </ul>
  </li>
</ul>
<?php }else{ ?>
<ul class="nav navbar-nav navbar-right">
  <li><a href="<?php echo base_url(); ?>User">Inscrivez-vous</a></li>
  <li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Connectez-vous <b class="caret"></b></a>
    <ul class="dropdown-menu ins">
      <?php echo form_open("verifylogin"); ?>
       <input type="text" style="margin: 5px 0;" id="username" name="username" class="form-control" placeholder="Nom d'utilisateur"/>
       <input type="password" style="margin: 5px 0;" id="password" name="password" class="form-control" placeholder="Mot de passe"/>
       <input type="submit" class="btn btn-primary" value="Connexion" />
      <?php echo form_close(); ?>
      <p><a href="#">Mot de passe oublier?</a></p>
    </ul>
  </li>
</ul>
<?php } ?>

它是这样工作的,但另一个问题已经暴露,内容页脚部分在页面中显示了两次,这里是问题的图片:

https://docs.google.com/file/d/0B2keUK5KhVo8bDk1OU1yQ2xfU0k/edit?usp=drivesdk

这是我的home Controller

session_start(); //we need to call PHP's session object to access it through CI
class Pages extends CI_Controller {
public function view($page = 'home')
{
      if($this->session->userdata('logged_in'))
      {
        $session_data = $this->session->userdata('logged_in');
        $data['username'] = $session_data['username'];
        $this->load->view('templates/header');
        $this->load->view('pages/home');
        $this->load->view('templates/footer');
      }/*
      else
      {
        //If no session, redirect to login page
        redirect('login', 'refresh');
      }*/
      $this->load->view('templates/header');
      $this->load->view('pages/home');
      $this->load->view('templates/footer');
    }
    function logout()
    {
      $this->session->unset_userdata('logged_in');
      session_destroy();
      redirect('/', 'refresh');
    }
}

我想你已经错误的逻辑在你的控制器。在用户登录的情况下,视图被加载两次。用这个覆盖你的视图函数:

public function view($page = 'home')
{
    $session_data = $this->session->userdata('logged_in');
    $data['username'] = $session_data['username'];
    $this->load->view('templates/header');
    $this->load->view('pages/home');
    $this->load->view('templates/footer');
}