У меня есть контроллер, который отображает фрагмент страницы; и он может быть обновлен с использованием ajax. До сих пор этот контроллер не использует это в верхней части:Использование запроса в параметре условия @ Маршрут
if ('/_fragment' !== $request->getPathInfo() && !$request->isXmlHttpRequest()) {
throw $this->createNotFoundException();
}
Это хорошо работает, но я видел, что there is a condition
option in the @Route
annotation, и хотел использовать его вместо:
/**
* @Route(
* "/widget/render/{cryptedId}",
* name = "widget_render",
* requirements = {
* "cryptedId" = "^[a-zA-Z0-9]+$"
* },
* condition = "'/_fragment' == request.getPathInfo() or request.isXmlHttpRequest()"
*)
* @Method({"GET"})
* @Template()
*/
Но добавление этой опции дает мне следующее ошибка:
FatalErrorException in appDevUrlMatcher.php line 319:
-> Error: Call to a member function getPathInfo() on a non-object
Это странно, потому что из документации, context
и request
доступны в выражении синтаксического анализа. Глядя на исходный код, в UrlMatcher.php, мы можем видеть, что они должны быть доступны:
if ($route->getCondition() && !$this->getExpressionLanguage()->evaluate($route->getCondition(), array('context' => $this->context, 'request' => $this->request))) {
return array(self::REQUIREMENT_MISMATCH, null);
}
Я действительно не понимаю смысла. Любая подсказка?
Вы правы, он работает над пустым проектом. У меня должен быть пакет поставщиков, который конфликтует, будет исследовать этот путь. благодаря –