2013-03-11 9 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. Теперь я использую admin.example.net для модуля admin. Мне также нужно добавить 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 к $router под тем же именем: admin. Поэтому второе задание переопределяет первое.

Сделайте ключи уникальными - скажем, изменив последнее на adminnew - и вы должны быть хорошими.

+0

Спасибо за ваш ответ. Поэтому мне нужно создать новое имя модуля для модуля администратора (например, adminnew), не так ли? Не могу ли я ссылаться на одно и то же имя модуля для разных доменов? – NewPHP

+1

Не нужно изменять имя модуля; вы можете перенаправить два разных домена в один и тот же модуль. Вышеупомянутая проблема заключается в том, что вы пытаетесь добавить два маршрутизатора с одним и тем же * именем маршрута * 'admin' на маршрутизатор. Если вы измените имя второго маршрута, маршрутизатор сможет сохранить их оба. –