2010-11-29 5 views
6

Je dois exécuter le même site basé sur zend_framework pour exécuter sur plusieurs domaines et mon application doit savoir sur quel domaine il s'exécute. J'ai pensé que c'était une bonne idée d'utiliser Zend_Controller_Router_Route_Hostname, mais j'ai rencontré quelques problèmes.Exécutez le même site Zend_Framework sur plusieurs domaines avec Zend_Controller_Router_Route_Hostname

Je le code suivant dans mon bootstrap

$ctrl = Zend_Controller_Front::getInstance(); 
$router = $ctrl->getRouter(); 
$router->removeDefaultRoutes();  

$hostnameRoute = new Zend_Controller_Router_Route_Hostname(
    ':sub-domain.:domain.:tld' 
); 

$defaultRoute = new Zend_Controller_Router_Route(
    ':controller/:action/*', 
    array(
     'controller' => 'index', 
     'action' => 'index' 
    ) 
); 
$router->addRoute('default',$hostnameRoute->chain($defaultRoute)); 

je reçois l'erreur suivante « sous-domaine n'est pas spécifié. » Je pense que je l'ai suivi jusqu'à ce $ this-> url dans mon fichier de disposition utilise les routes définies pour assembler l'URL avant que l'itinéraire est mis en correspondance avec l'URL de la demande. Si je définis des valeurs par défaut sur la route du nom d'hôte, je ne reçois pas l'erreur, mais les URL de la mise en page utilisent les valeurs par défaut à la place des valeurs du nom d'hôte actuel.

Qui peut m'aider à résoudre ce problème?

Répondre

1

Vous devez définir une valeur par défaut pour le sous-domaine. Remplacez $ defaultRoute par:

$defaultRoute = new Zend_Controller_Router_Route(
    ':controller/:action/*', 
    array(
     'controller' => 'index', 
     'action' => 'index' 
    ) 
); 

Cela devrait fonctionner.

+1

qui ne diffère pas de ce qu'il a écrit ou suis-je aveugle? –

1

Vous avez un problème de génération d'URL. Vous devez spécifier des paramètres pour les variables dans la définition d'itinéraire pour votre nom d'hôte comme ceci:

echo $this->url(array('sub-domain' => 'your-subdomain-here', 'domain' => 'your-domain', 'tld' => 'com'), 'default'); 

Sinon aide URL Zend ne peut pas générer URL pour votre définition : sous-domaine:. Domaine:. Tld. L'exemple fourni génère cet URL: your-subdomain-here.your-domain.com/current_controller/current_action

Vérifiez également si le sous-domaine est un nom de variable légale. Essayez de le changer en sous-domaine.

Questions connexes