Неизвестный модуль Zend Framework интерпретируется как модуль по умолчанию - PullRequest
1 голос
/ 20 февраля 2011

я хотел поддержать многоязычную структуру для моей работы, я использовал следующие строки

$controller=Zend_Controller_Front::getInstance();
$router=$controller->getRouter();
$languageRouter=new Zend_Controller_Router_Route(":lang/:module/:controller/:action", array("lang"=>"en","module"=>"default","controller"=>"index","action"=>"index"),
                                                array("lang"=>"[a-zA-Z]{2}"));
$router->addRoute("default",$languageRouter);

работает нормально http://localhost/zend/public/en установите для параметра lang значение en и вызовите модуль по умолчанию но проблема в том, что когда я использую URL-адрес, как это http://localhost/zend/public/en/anything где что-то не является модулем, он по-прежнему показывает модуль по умолчанию, как это предотвратить ???


после ответа takehin я добавил эту функцию в файл начальной загрузки, и теперь она работает так, как я хочу

protected function _initRoutes()
{
    $routeLang=new Zend_Controller_Router_Route(':lang',array('lang'=>'en'),array('lang'=>'[a-z]{2}'));
    $front  = Zend_Controller_Front::getInstance() /*$this->getResource('frontcontroller')*/;
    $router = $front->getRouter();
    $routeDefault=new Zend_Controller_Router_Route_Module(array(),$front->getDispatcher(),$front->getRequest());
    $routeLangDefault=$routeLang->chain($routeDefault);
    $router->addRoute('default',$routeLangDefault);
    $router->addRoute('lang',$routeLang);
}

Ответы [ 3 ]

1 голос
/ 20 февраля 2011

Похоже, что вы перезаписали default модуль, определенный в Zend Application вашим собственным.

Вы должны связать маршруты вместо этого.

0 голосов
/ 20 февраля 2011

Я не уверен, правильно ли я понял это, но похоже, что он работает нормально, как и должно.Если вы попытаетесь вызвать несуществующий модуль, Zend Framework автоматически «перенаправит» на модуль по умолчанию.

0 голосов
/ 20 февраля 2011

Используемые вами настройки означают, что модуль по умолчанию будет «по умолчанию», в противном случае вы получите ошибку маршрута не найдена - что должно привести к соответствующему контроллеру ошибок

...