Проверьте URL-адрес перед перенаправлением symfony2

if ($u = $this->generateUrl('_'.$specific.'_thanks')) return $this->redirect($u); else return $this->redirect($this->generateUrl('_thanks')); 

Я не буду перенаправлять _specific_thanks адрес _specific_thanks если он существует. Итак, как проверить, существует ли URL-адрес?

Когда я это сделал, у меня была эта ошибка:

Маршрут «_специфические_тынки» не существует.

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

 $router = $this->container->get('router'); 

Затем вы можете получить коллекцию маршрутов и вызвать get() для заданного маршрута, который возвращает null, если он не существует.

 $router->getRouteCollection()->get('_'. $specific. '_thanks'); 

Использование getRouteCollection() во время выполнения не является правильным решением . Для выполнения этого метода потребуется переустановка кеша. Это означает, что кеширование маршрутизации будет перестраиваться по каждому запросу, что сделает ваше приложение намного медленнее, чем необходимо.

Если вы хотите проверить, существует ли маршрут или нет, используйте конструкцию try … catch:

 use Symfony\Component\Routing\Exception\RouteNotFoundException; try { dump($router->generate('some_route')); } catch (RouteNotFoundException $e) { dump('Oh noes, route "some_route" doesn't exists!'); } 

Попробуйте что-то вроде этого, проверьте маршрут в массиве всех маршрутов:

  $router = $this->get('router'); if (array_key_exists('_'.$specific.'_thanks',$router->getRouteCollection->all())){ return $this->redirect($this->generateUrl('_'.$specific.'_thanks')) } else { return $this->redirect($this->generateUrl('_thanks')); } 

Вы проверили свой актерский состав? И вы уверены в маршруте? обычно начинать маршрут с

  'WebSiteName _'. $ Конкретных .'_ спасибо 

Попробуй это:

 if ($u == $this->generateUrl('_'.$specific.'_thanks') )