使用switch case在codeigniter中加载页面

时间:2017-11-21 08:22:12

标签: php codeigniter

我学习了Codeigniter基础知识,但后来我停了下来。所以即时重新学习。

我知道有更多先进的方法可以做到这一点,但我想以我能理解的方式做事。我不想咬掉那些只会让我迷惑的高级东西。在线复制粘贴片段非常简单,但我想了解代码中的所有内容。

无论如何,我总是在php中使用if语句,idk为什么,我从来没有在编码中找到正确的指导原则,所以在某些情况下切换案例最好我还在使用熟悉的if语句。

所以在我的项目中,我的链接是这样做的。

<a href="<?php echo base_url();?>pages/view/home">Homepage</a>

在我的控制器中,我已经设置了我的视图方法来取出uri-segment以了解要加载的页面。

$data = array('page' => $this->uri->segment(3,home));

switch ($data['page']){
case 'home';
$data['tile'] = "Homepage";
$data['page'] = "userhome";
break;
case 'login';
$data['tile'] = "Login";
$data['page'] = "userlogin";
break
}

$this->load->view('templates/header',$data);
$this->load->view('templates/navbar');
$this->load->view('pages/'.$data['page']);
$this->load->view('templates/footer');

但它不起作用。标题和页面不会改变。

我可以使用if else语句轻松完成此操作。

$temp = $this->uri->segment(3,'home');

if($temp == "home"){
$data = array('title' => 'Homepage' , 'page' => 'home');
$this->load->view('template/header',$data);
$this->load->view('template/navbar');
$this->load->view('pages/'.$data['page']);
$this->load->view('template/footer');
}else if($temp == "login"){
$data = array('title' => 'Login' , 'page' => 'userlogin');
$this->load->view('template/header',$data);
$this->load->view('template/navbar');
$this->load->view('pages/'.$data['page']);
$this->load->view('template/footer');   
}

我在某处看到开关盒比if else更快,我只是向你展示我到目前为止所做的前2页,登录和主页,但是将来生成的任何其他页面都将以相同的方式加载所以代码会变长。这就是我对使用开关盒感兴趣的原因。

这虽然有效

$temp = $this->uri->segment(3,'home');      
        switch ($temp){
        case 'home':
        $data = array('title' => "Homepager" , 'page' => "home");
        $this->load->view('template/header',$data);
        $this->load->view('template/navbar');
        $this->load->view('pages/'.$data['page']);
        $this->load->view('template/footer');   
        break;
        case 'login':
        $data = array('title' => "Login" , 'page' => "userlogin");
        $this->load->view('template/header',$data);
        $this->load->view('template/navbar');
        $this->load->view('pages/'.$data['page']);
        $this->load->view('template/footer');   
        break;
        }

1 个答案:

答案 0 :(得分:0)

可能是因为您在switch声明中输错了,您是要将值分配给data['tile'],而不是data['title']