【问题标题】:CodeIgniter handle URL segmentsCodeIgniter 处理 URL 段
【发布时间】:2013-05-09 00:24:10
【问题描述】:

我一直在思考如何使用 CI 处理 URL 和页面,但我想不出一个好的方法。

我正在尝试这样处理网址:

site.com/shop (shop is my controller)
site.com/shop/3 (page 3)
site.com/shop/cat/4 (categorie and page 4)
site.com/shop/cat/subcat/3 (cat & subcat & page)

有什么好办法吗?

【问题讨论】:

    标签: codeigniter url segment


    【解决方案1】:

    您可以创建控制器函数来处理:

    • 商店和商店页面
    • 类别和类别页面
    • 子类别和子类别页面

    控制器功能

    在您的shop 控制器中,您可以拥有以下功能:

    function index($page = NULL)
    {
        if ($page === NULL)
        {
            //load default shop page
        }
        else  //check if $page is number (valid parameter)
        {
            //load shop page supplied as parameter
        }
    }
    
    function category($category = NULL, $page = 1)
    {
        //$page is page number to be displayed, default 1
        //don't trust the values in the URL, so validate them
    }
    
    function subcategory($category = NULL, $subcategory = NULL, $page = 1)
    {
        //$page is page number to be displayed, default 1
        //don't trust the values in the URL, so validate them
    }
    

    路由

    然后您可以在application/config/routes.php 中设置以下routes。这些路由会将 URL 映射到适当的控制器函数。正则表达式将允许查找值

    //you may want to change the regex, depending on what category values are allowed
    
    //Example: site.com/shop/1    
    $route['shop/(:num)'] = "shop/index/$1";   
    
    //Example: site.com/shop/electronics  
    $route['shop/([a-z]+)'] = "shop/category/$1";
    
    //Example: site.com/shop/electronics/2 
    $route['shop/([a-z]+)/(:num)'] = "shop/category/$1/$2";
    
    //Example: site.com/shop/electronics/computers
    $route['shop/([a-z]+)/([a-z]+)'] = "shop/subcategory/$1/$2";
    
    //Example: site.com/shop/electronics/computers/4 
    $route['shop/([a-z]+)/([a-z]+)/(:num)'] = "shop/subcategory/$1/$2/$3";
    

    【讨论】:

    • 在子类功能...我怎么知道猫的名字?
    • @fred.kassi 你希望 categorysubcategorypage 都是参数吗?
    • 我想是这样... site.com/shop/smartphone/apple 或 site.com/shop/smartphone/34 或 site.com/shop/54/
    • 好的,我想我的答案现在可以满足您的需求了吗?
    • 没问题,很高兴我的回答有帮助!
    猜你喜欢
    • 2013-05-12
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多