2009-11-16 3 views
1

Je suis tout nouveau à codeIgniter.Question de routage de l'URL de l'initiateur de code (à l'aide des barres obliques)

Je suis très particulier sur les URL sur les sites que je développe. Est-il possible de créer ces sortes d'URL? Généralement les sites que je développe ont une interface d'administration intégrée ainsi que nouveau, éditer ou supprimer ajouté à la fin de l'url suite à une barre oblique.

Voici quelques exemples hypothétiques (une avec une url admin):

pages de haut niveau (pas slash)

site.com/about 
site.com/contact 
site.com/contact/edit 

listes d'index de section (listes ont de slash)

site.com/blog/ 
site.com/products/ 
site.com/products/edit 

pages de section (les listes ont slash)

site.com/blog/first-post 
site.com/products/best-product 
site.com/products/new 
site.com/products/best-product/delete 

catégories de section

site.com/blog/code-questions/ 
site.com/products/red-products/ 
site.com/products/red-products/delete 

le premier problème que je vois est l'envoi d'une URL avec un slash à un autre contrôleur puis sans. Puisque vous ne pouvez pas les ajouter dans le fichier de routage. Par exemple avec les pages de niveau supérieur comment saurais-je appeler le contrôleur de Pages? comment puis-je les différencier des listes d'index de sections? Je ne peux pas ajouter de barres obliques dans les routes.php!

site.com/about 
site.com/blog/ 

même avec les pages de la section par rapport aux catégories.

généralement j'ai fait cela dans le passé avec un fichier .htaccess.

quelques exemples de la façon dont je la structure des fichiers .htaccess pour urls dans le passé dans mes propres applications

RewriteRule ^new$ index.php?static&new 
RewriteRule ^edit$ index.php?edit 
RewriteRule ^([a-z0-9\-]+)$ index.php?static&post=$1 
RewriteRule ^([a-z0-9\-]+)/edit$ index.php?static&edit=$1 

RewriteRule ^([a-z0-9\-]+)/$ index.php?section=$1 
RewriteRule ^([a-z0-9\-]+)/new$ index.php?section=$1&new 
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)$ index.php?section=$1&post=$2 
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/$ index.php?section=$1&category=$2 

Y at-il de toute façon de le faire avec CodeIgniter? Devrais-je simplement écraser les règles de réécriture en plus des urls générées par le contrôleur? Est-il possible de le faire avec le fichier routing.php? Si codeIgniter ne fait pas cela, pourriez-vous suggérer un cadre qui peut?

Comment gérer les traits d'union dans l'URL lorsqu'ils sont liés au nom de classe du contrôleur?

+0

La fourche suivante qui inclut le support HMVC vous permet d'être strict quant à l'utilisation des barres obliques: https: // github.com/Bigwebmaster/codeigniter-modulaire-extensions-hmvc – Brian

Répondre

2

CodeIgniter a une manière assez agréable de gérer le routage URI (http://codeigniter.com/user_guide/general/routing.html).

Par défaut, si vous utilisez .htaccess de CodeIgniter (http://codeigniter.com/user_guide/general/urls.html), toutes les demandes sont transformées en jolis segments.

Vous pouvez facilement utiliser le fichier routing.php de CodeIgniter pour générer ces URL que vous recherchez. S'il vous plaît se référer à leur documentation très facile à suivre au http://codeigniter.com/user_guide/.

+0

$ routing ['blog/view /: num'] = 'section/blog/view/$ 1'; $ routing ['products /: num'] = 'section/produits/voir/$ 1'; – Jedi

+0

Si j'ai bien compris, vous voulez juste une barre oblique pour indiquer que l'action est différente? Je ne suis pas sûr que ce soit une façon très pratique de faire ce que vous essayez de faire. Je préfère utiliser quelque chose comme votre "/ new" segment. – Jedi

+0

C'est exact. de sorte que site.com/([a-z0-9\-]+) chargerait le contrôleur TopPages et que site.com/([a-z0-9\-]+)/ chargerait le contrôleur de blog et ainsi de suite. – user73119

Questions connexes