Codeigniter Route url父母页面和子页面

时间:2014-04-03 03:06:02

标签: php codeigniter url-routing

编辑:我是新的Codeigniter我不是如何使用Codeigniter路由。我创建了联系我们页面和地图页面。地图页面是“联系我们”页面的子页面。

表名:页面

id  label       link            parent
1   Contact Us  contact-us      0
3   About Us    about-us        0
2   Map         map             1

这是我的控制器

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Page extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->helper('url');
        $this->load->model('page_model');
    }
    public function index()
    {   

        $data['getAllPage'] = $this->page_model->getAllPages(); 

        $this->load->view('page_listing',$data);

    }
    public function view($id) {
        $data['single_page'] = $this->page_model->displaySinglePage($id);
        $this->load->view('single_page',$data);
    }
}

在routes.php中我放了$ route ['(:any)'] =“page / view / $ 1”;

当我输入网址“http://mytest.dev/contact-us/”或“http://mytest.dev/about-us/”时,它会显示正确的联系页面内容,但我输入“http://mytest.dev/contact-us/map”,它仍会显示联系页面的内容。

当我输入“http://mytest.dev/contact-us/map”时,我想要的是显示地图页面的内容

提前致谢。

3 个答案:

答案 0 :(得分:1)

我认为以下路线应该有效

$route['contact-us'] = 'page/view/$1';

$route['contact-us/map'] = 'page/view/$2';

当你在视图方法中回显$ id时。

http://mytest.dev/contact-us/”将打印$ 1

http://mytest.dev/contact-us/map”将打印$ 2

希望这个解决方案有所帮助。

答案 1 :(得分:1)

请尝试代码也许可以帮助

// Parents and Child page.
$route['page/(:any)/(:num)'] = "page/view/$1/$2";

// For Main Home Page.
$route['(:any)'] = "page/view/$1";

答案 2 :(得分:1)

我的网站有一个主要的“活动”页面和一个“活动/日历”页面。将页面创建为单独的视图,然后为主控制器中的每个子页面创建一个函数。这是我的事件控制器。如果您想要动态页面,可以在函数中添加适当的代码。

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Events extends CI_Controller {

    public function index()
    {
        $this->load->view('inc/header.php');
        $this->load->view('events_view');
        $this->load->view('inc/footer.php');
    }

    public function calendar()
    {
        $this->load->view('inc/header.php');
        $this->load->view('calendar_view');
        $this->load->view('inc/footer.php');
    }
}