Bonjour,
Je dispose sur mon site d'un sous menu répertoriant différentes catégories de produits.
Les éléments de ces sous menus sont matérialisés par des liens, redirigeant vers l'action "category" du contrôleur "Products", avec en paramètre le nom de la catégorie. Cela me permet ensuite dans mon action "category" d'exécuter une requête recherchant tous les produits appartenant à ladite catégorie.
Du coup, si je clique sur un des liens, je me retrouve sur une url du style "products/category/x".
Problème, je dispose dans toutes mes pages, sous forme d'un Element, d'un formulaire de recherche, qui fait appel à l'action "search" (toujours dans "ProductsController"), avec $this->params'pass'] en paramètre.
Si j'effectue une recherche depuis mon "index", pas de souci, je le vois bien dans l'url: /products/search/keywords:blabla
Par contre, si je fais de même depuis une de mes catégories, vu que celle ci est en paramètre de l'url à la base, c'est la 1ère entrée dont je dispose dans $this->passedArgs, et je me retrouve qui plus est sur une url du genre "products/search/categoriex/keywords:blabla
Je me demande donc comment pallier à ce problème.
Une première solution, mais qui ne me convient pas, serait d'avoir une action par catégorie, et d'appeler l'action correspondante depuis le lien.
Une autre piste, consiste à passer la catégorie en paramètre de cette façon dans le lien:
'controller' => 'products', 'action' => 'category', 'category' => 'x'
Ce qui me donne une url du style: "products/category/category:x", et la catégorie ne figure plus dans $this->passedArgs.
En bref, je bricole un petit peu, mais je ne suis pas sur que ces méthodes soient les plus adéquates.
Auriez-vous une autre alternative à me proposer ?
D'avance, merci.
J'ai réussi à résoudre mon problème grâce au routing avec paramètres nommés.