Необязательный фрагмент URL в Codeigniter? - PullRequest
2 голосов
/ 05 июня 2010

Это может быть простой вопрос о синтаксисе или, возможно, вопрос наилучшей практики с точки зрения 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 будет использоваться, как в примере, значение равно «sandals»? Разве эта переменная не должна быть чем-то вроде $ shoetype?

Ответы [ 2 ]

3 голосов
/ 05 июня 2010

Есть два способа, как вы можете это сделать ...

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

}
3 голосов
/ 05 июня 2010

Вы можете сделать это легко, установив значение по умолчанию следующим образом:

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

Обратите внимание, что я считаю, что вы должны указать те слева, чтобы указать некоторые справа. У вас не может быть необязательного первого сегмента и необходимого самого правого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...