2010-09-13 12 views
0

Je prévois de recréer le site web de mes paroles dans CodeIgniter. En ce moment, la façon dont je l'ai mis en place est comme ceci:
example.com/artistname et example.com/anotherartistURL de CodeIgniter help

J'ai aussi example.com/contact et example.com/request etc ..

je peux obtenir qu'il soit example.com/artist/artistname, mais je J'aime vraiment garder simple pour l'utilisateur de mémoriser les URL.

Quelqu'un peut-il m'aider avec ça?

Merci, Maikel

Répondre

3

En application/config/routes.php essayer:

$route['contact'] = 'contact'; // /contact to contact controller 
$route['request'] = 'request'; // /request to request controller 
$route['(.*)'] = 'artist/display/$1'; // anything to artist controller, display method with the string as parameter 
+0

merci beaucoup: D – Maikel

0

Via le Guide de l'utilisateur CodeIgniter ici: http://codeigniter.com/user_guide/general/routing.html

Vous pouvez remapper quoi que ce soit (:any) à votre contrôleur artist. De là, vous pouvez remapper contact, request, etc. sur leurs contrôleurs/fonctions respectifs ou vous pouvez utiliser votre constructeur pour les vérifier et appeler la fonction correcte. Exemples:

en utilisant l'URI de routage:

$route['contact'] = "contact"; 
$route['request'] = "request"; 
... // etc... 
$route['(:any)'] = "artist/lookup/$1"; // MUST be last, or contact and request will be routed as artists. 

Utilisation de votre Constructor:

public function __construct($uri) { 
    if ($uri == "contact") { 
     redirect('contact'); 
    } elseif ($uri == "request") { 
     redirect('request'); 
    } 
} 

Cette méthode pourrait cependant entraîner une boucle infinie. Je ne le suggérerais pas, sauf si vos fonctions contact et request étaient dans le même contrôleur. Ensuite, vous pouvez simplement les appeler avec $this->contact() ou $this->request() au lieu de la redirection.

+0

Vous devez toujours passer le nom de l'artiste à la fonction de contrôleur: '$ route [': any'] =" artiste/recherche/$ 1 ";' – Mischa

+0

Selon le Guide de l'utilisateur , vous ne faites pas. Mais pour être sûr que vous obtenez ce que vous voulez, je suis d'accord. Je vais faire le changement. – Micheal

+0

: tout est converti en. + Car les routes sont simplement regex. Si vous ratez le() alors vous ne pouvez pas utiliser $ 1. L'itinéraire complet est $ route ['(: any)'] = "artiste/recherche/$ 1"; –