2010-11-29 8 views
6

Ich muss die gleiche Seite basierend auf dem zend_framework ausführen, um auf mehreren Domains zu laufen und meine Anwendung muss wissen, auf welcher Domain sie läuft. Ich dachte, es wäre eine gute Idee, Zend_Controller_Router_Route_Hostname zu verwenden, aber ich habe einige Probleme festgestellt.Führe die gleiche Zend_Framework-Site auf mehreren Domains mit Zend_Controller_Router_Route_Hostname

Ich habe den folgenden Code in meinem 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)); 

bekomme ich folgende Fehlermeldung "Sub-Domain nicht angegeben ist." Ich denke, ich habe es bis zu diesem $ this-> URL in meiner Layout-Datei ist die Verwendung der definierten Routen, um die URL vor dem Abgleich der Route mit der Anfrage URL zu sammeln. Wenn ich Standardwerte für die Route hostname festlege, erhalte ich den Fehler nicht, aber die URLs im Layout verwenden die Standardwerte anstelle der Werte im aktuellen Hostnamen.

Wer kann mir helfen, dieses Problem zu lösen?

Antwort

1

Sie sollten einen Standardwert für Subdomain definieren. Ändern Sie $ defaultRoute zu diesem:

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

Es sollte funktionieren.

+1

das unterscheidet sich nicht von dem, was er schrieb oder bin ich blind? –

1

Sie haben ein Problem bei der URL-Generierung. Sie sollten, wie dies für Ihren Hostnamen Parameter für Variablen in der Routendefinition angeben:

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

Ansonsten Zend URL Helfer nicht URL für Ihre Definition erzeugen kann : Sub-Domain:. Domain:. Tld. Im angegebenen Beispiel wird diese URL generiert: your-subdomain-here.your-domain.com/current_controller/current_action

Überprüfen Sie auch, ob die Subdomäne der Name der zulässigen Variablen ist. Versuchen Sie, es in Subdomain zu ändern.

Verwandte Themen