Codeigniter中的可选URL片段?

时间:2010-06-05 15:17:43

标签: codeigniter

这可能是一个简单的语法问题,或者可能是codeigniter方面的最佳实践问题。

我应该首先说我不是PHP或Codeigniter人,所以试图加快帮助项目。

我发现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会被用作示例,值是'凉鞋'?这个变量不应该像$ shoetype?

2 个答案:

答案 0 :(得分:3)

您可以通过设置默认值轻松完成此操作,如下所示:

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)
}

请注意,我相信您必须在左侧指定一些以指定右侧的内容。您不能拥有可选的第一段和最右侧的段。

答案 1 :(得分:3)

有两种方法可以做到这一点......

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

}