代码之家  ›  专栏  ›  技术社区  ›  DA.

代码点火器中的可选URL片段?

  •  2
  • DA.  · 技术社区  · 16 年前

    这可能是一个简单的语法问题,也可能是代码点火器方面的最佳实践问题。

    首先,我应该说我不是一个PHP或代码点火器的人,所以我想尽快帮助一个项目。

    我发现CI文档相当好。我找不到答案的一个问题是如何使URL的一部分成为可选的。CI文档使用的示例如下:

    example.com/index.php/products/shoes/sandals/123
    

    然后是用来解析URI的函数:

    function shoes($sandals, $id)
    

    对于我的示例,我希望能够修改URL,如下所示:

    example.com/index.php/products/shoes/all
    

    所以,如果没有传递任何ID,它就会被忽略。能做到吗?应该这样做吗?

    第二个问题与我的问题无关,但与上面的例子有关,为什么会像例子中那样使用变量$sandals,其值是'sandals'?那个变量不应该是$shoetype吗?

    2 回复  |  直到 16 年前
        1
  •  3
  •   Elliot    16 年前

    通过设置默认值,可以很容易地做到这一点,如下所示:

    function shoes($type = 'all', $id = null)
    {
       //assume the default type of shows: all
       //assume no ID (and do whatever behaviour - e.g. top 5 in that type)
    }
    

    请注意,我相信您必须在左边指定那些,才能在右边指定一些。不能有可选的第一段和必需的最右边的段。

        2
  •  3
  •   boki    16 年前

    有两种方法可以做到…

    function shoes($type = "all", $id = false)
    {
        if ($type == "all")
        {
    
           // ... here you can show all
    
        } 
        else if (is_int($id))
        {
    
           // ...
    
        }
    }
    

    第二种方式…

    function shoes()
    {
        $type = $this->uri->segment(3, 'all');
        $id = $this->uri->segment(4, false);
    
        // ... everything else can be same like first example
    
    }
    
    推荐文章