2010-06-05 3 views
1

Je crée un projet dans lequel je souhaite que l'utilisateur recherche des boutiques dans différentes villes et souhaite que l'URL ressemble à ceci: domain/shop/city/name. J'ai donc créé un contrôleur dans le codeigniter appelé Shop. Mais je ne peux pas créer une fonction de ville puisque la partie ville de l'url change en fonction du nom de la ville. Une façon simple de le faire serait d'ajouter une fonction appelée "search" et d'ajouter la fonctionnalité là-bas, mais ensuite j'obtiens une URL comme: domain/shop/search/city/name que j'aimerais vraiment éviter.Codeigniter - Est-il acceptable d'ajouter des fonctionnalités au constructeur dans les contrôleurs?

Donc, ma question est de savoir si c'est correct d'ajouter ma fonctionnalité directement dans le constructeur pour éviter cette partie de "recherche" supplémentaire dans l'URL? J'ai peur qu'il puisse y avoir des astuces de performance qui gardent potentiellement la classe en mémoire pour que le constructeur ne soit pas appelé à chaque fois.

Répondre

2

routage CodeIgniter est assez souple - vous pouvez probablement faire ce que vous avez besoin de jongler avec les paramètres de votre configuration de routes, en utilisant éventuellement la fonctionnalité générique:

Sinon, vous peut toujours utiliser mod_rewrite d'Apache pour réécrire de manière transparente les URL du formulaire domain/shop/city/name vers le formulaire domain/shop/search/city/name, ou une variante.

+0

Je n'ai trouvé aucun moyen de le faire par routage, mais vous avez probablement raison sur mod_rewrite. Merci! – Irro

+1

L'utilisation du routage permet de résoudre ce type de problème, et le guide de l'utilisateur de CI fournit des instructions claires sur son utilisation. – Kurucu

+0

Mon mauvais, je l'ai disséqué façon de jeûner. C'était parfait pour ce que j'avais besoin de faire: $ route ['shop/([\\ w] *)'] = "shop/search/$ 1"; – Irro

Questions connexes