2010-07-15 5 views
3

Est-il possible de faire des routes spécifiques à un domaine dans cakephp?Routage par nom d'hôte dans CakePHP

par exemple, disons que j'ai 2 domaines: manufacturer.com et productname.com

productname.com est stationnée sur manufacturer.com.

Je voudrais créer un itinéraire comme celui-ci:

Router::connect('http://www.productname.com/', array('controller' => 'products', 'action' => 'view', 'productSlug')); 

donc en gros l'index pour manufacturer.com est la valeur par défaut pages/index mais pour productname.com il devrait être products/view/productSlug

Est-ce possible avec gâteau ?

Répondre

4

Je vais juste répondre à ma propre question avec la solution que j'ai trouvée. Au lieu d'essayer de vérifier le domaine à l'intérieur des routes, une meilleure façon serait de vérifier le nom d'hôte avant même de définir des routes. Par exemple:

if($_SERVER['HTTP_HOST']=='productname.com') 
    Router::connect('/', array('controller' => 'products', 'action' => 'view', 'productSlug')); 
else 
    Router::connect('/', array('controller' => 'pages', 'action' => 'index')); 

Des opinions? Bon ou Mauvais? Je ne l'ai pas encore testé, mais au moins je ne vois rien de mal :)

+0

Je pense que cela devrait fonctionner, bon travail à résoudre vos propres problèmes! Ma seule préoccupation serait le codage en dur des noms d'hôte dans votre base de code. Si vous avez fait quelque chose de similaire, mais dans l'AppController, vous pouvez récupérer des données d'hôte/de routage à partir d'une base de données, ce qui facilitera la maintenance et la mise en place d'une interface d'administration. –

+0

Merci. Si c'était un site plus grand, je serais probablement aussi concerné par les noms d'hôtes codés en dur, mais dans ce cas, cela n'a pas vraiment d'importance. J'aimerais en savoir plus sur la méthode que vous avez suggérée. Pourriez-vous partager un exemple de code si ce n'est pas trop difficile? – jpeltoniemi

+0

Pour celui qui trouve ceci: ** assurez-vous de mettre cela dans 'Config/routes.php' ** sinon cela ne fonctionnera pas. –

1

C'est possible, mais je n'utiliserais probablement pas de routes pour le faire. Surtout parce que je ne suis pas un sorcier quand il s'agit d'eux;).

Pour le type de flexibilité que vous voulez, je pense que vous pourriez acheminer toutes les demandes à un contrôleur centralisé (probablement votre AppController, en fait). Ensuite, demandez à ce contrôleur de déterminer la logique d'invocation de différents contrôleurs et actions.

+0

Désolé pour la réponse tardive, été occupé :) Pas mauvaise idée. Je vais garder cela à l'esprit, même si je suis venu avec quelque chose d'autre moi-même (merci à votre réponse) :) – jpeltoniemi

Questions connexes