2010-06-05 17 views
1

C'est peut-être une simple question de syntaxe ou peut-être une question de bonnes pratiques en termes de codeigniter.Fragment d'URL facultatif dans Codeigniter?

Je devrais commencer par dire que je ne suis pas une personne de PHP ou de Codeigniter essayant ainsi de se mettre au courant pour aider sur un projet. J'ai trouvé la documentation de l'IC assez bonne. La seule question à laquelle je ne trouve pas de réponse est comment rendre une partie d'une URL facultative. Un exemple de la documentation CI utilise est la suivante:

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

puis la fonction utilisée pour analyser l'URI:

function shoes($sandals, $id) 

Pour mon exemple, je voudrais pouvoir modifier l'URL en tant que telle :

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

Ainsi, si aucun ID n'est passé, il est simplement ignoré. Cela peut-il être fait? Est-ce que cela devrait être fait?

Une deuxième question sans rapport avec mon problème mais concernant l'exemple ci-dessus, pourquoi utiliser la variable $ sandals comme dans l'exemple, la valeur est 'sandals'? Cette variable ne devrait-elle pas être quelque chose comme $ shoetype?

Répondre

2

Vous pouvez le faire facilement, en définissant une valeur par défaut, comme suit:

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

Notez que je crois que vous devez spécifier ceux à gauche pour indiquer quelques-uns à droite. Vous ne pouvez pas avoir un premier segment facultatif et un premier segment requis.

+0

C'était ça! Merci! –

3

Il y a deux façons comment vous pouvez le faire ...

function shoes($type = "all", $id = false) 
{ 
    if ($type == "all") 
    { 

     // ... here you can show all 

    } 
    else if (is_int($id)) 
    { 

     // ... 

    } 
} 

deuxième façon ...

function shoes() 
{ 
    $type = $this->uri->segment(3, 'all'); 
    $id = $this->uri->segment(4, false); 

    // ... everything else can be same like first example 

} 
+0

Merci pour cette information supplémentaire, boki! –