Zend Framework: проверка, существует ли маршрут из кода - PullRequest
2 голосов
/ 19 августа 2010

в Zend Framework, я могу проверить, существует ли маршрут из кода?

пример

говорят, что следующие маршруты / URL действительны (указать на контроллер / действие)

/users
/users/1 // /users?id=1
/users/page/1  /users?page=1
/users/tagged/tagname/page/1 /users?tagged=1&page=1

, если пользователь пытается перейти на /users/nonexistantpage, он должен потерпеть неудачу. Что-то, чтобы проверить, запросит ли пользователь URL, не будет ли это, но на уровне кода.

Ответы [ 4 ]

3 голосов
/ 20 августа 2010

Я полагаю, вы ищете метод match () для маршрутизатора Zend. Посмотрите, поможет ли это.

1 голос
/ 30 октября 2016

Для тех, кто использует Zend Framework 2, это очень просто.

Допустим, мы хотим проверить, совпадает ли URI с зарегистрированным маршрутизатором, и перенаправить пользователя, если он отличается от текущего URL.

$goto = 'http://www.mysite.tld/admin';

$request  = $this->getRequest();
$request->setUri($goto);

if ($routeToBeMatched = $this->getServiceLocator()->get('Router')->match($request)) {
    $currentRouteMatchName = $this->getEvent()->getRouteMatch()->getMatchedRouteName();
    if ($routeToBeMatched->getMatchedRouteName() != $currentRouteMatchName) {
        return $this->redirect()->toRoute($goto);
    }
}
1 голос
/ 16 июля 2013

Это довольно старый вопрос, но я думаю, это то, что вы ищете:

foreach(Zend_Controller_Front::getInstance()->getRouter()->getRoutes() as $route)
{
    $route->match($uri);
}
1 голос
/ 03 марта 2012

Если вы используете перезаписывающий маршрутизатор (Zend_Controller_Router_Rewrite), у него есть метод hasRoute ($ route_name)

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

Zend_Controller_Front :: getInstance () -> getRouter () -> hasRoute ("my_route");

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