2013-03-11 89 views
1
protected function _initHostnameRouter() 
{ 
    $this->bootstrap('autoload'); 
    $this->bootstrap('FrontController'); 

    $front = $this->getResource('FrontController'); 

    $router = $front->getRouter(); 

    $hostRoute1 = new Zend_Controller_Router_Route_Hostname('admin.example.net',array('module' => 'admin')); 
    $hostRoute2 = new Zend_Controller_Router_Route_Hostname('vouchers.example.net',array('module' => 'vouchers')); 
    $pathRoute = new Curo_Route_NoModule(); 

    $router->removeDefaultRoutes(); 
    $router->addRoute('default',  $pathRoute); 
    $router->addRoute('admin',  $hostRoute1->chain($pathRoute)); 
    $router->addRoute('vouchers', $hostRoute2->chain($pathRoute)); 
} 

我有上面的代碼在Bootstrap文件中使用,它運行良好。我需要爲管理員模塊添加另一個域名。現在我使用admin.example.net作爲管理模塊。我還需要添加admin.examplenew.net。我不需要更改舊域名。兩者應該同時工作。Zend_Controller_Router_Route_Hostname兩個域名

我都試過了,

$hostRoute1 = new Zend_Controller_Router_Route_Hostname('admin.example.net',array('module' => 'admin')); 
    $hostRoute2 = new Zend_Controller_Router_Route_Hostname('vouchers.example.net',array('module' => 'vouchers')); 
    $hostRoute3 = new Zend_Controller_Router_Route_Hostname('admin.examplenew.net',array('module' => 'adminnew')); 
    $pathRoute = new Curo_Route_NoModule(); 

    $router->removeDefaultRoutes(); 
    $router->addRoute('default',  $pathRoute); 
    $router->addRoute('admin',  $hostRoute1->chain($pathRoute)); 
    $router->addRoute('vouchers', $hostRoute2->chain($pathRoute)); 
    $router->addRoute('adminnew', $hostRoute3->chain($pathRoute)); 

但是這兩個域名並不在同一時間工作。

回答

0

您正在將$hostRoute1$hostRoute3添加到同名$routeradmin。所以第二項任務是重寫第一項。

使鑰匙具有唯一性 - 例如,將最後一個更改爲adminnew - 並且您應該很好。

+0

感謝您的回答。所以我需要爲管理模塊創建一個新的模塊名稱(比如adminnew),不是嗎?我不能爲不同的域引用相同的模塊名稱嗎? – NewPHP 2013-03-11 22:39:07

+1

無需更改模塊名稱;您可以將兩個不同的域路由到同一個模塊。上面的問題是,你正在試圖添加兩個不同的路由具有相同的*路由名*'admin'到路由器。如果您更改第二條路由的名稱,則路由器將能夠保留它們兩者。 – 2013-03-12 11:30:54