本文整理汇总了PHP中Symfony\Component\Routing\RouterInterface::matchRequest方法的典型用法代码示例。如果您正苦于以下问题:PHP RouterInterface::matchRequest方法的具体用法?PHP RouterInterface::matchRequest怎么用?PHP RouterInterface::matchRequest使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Symfony\Component\Routing\RouterInterface
的用法示例。
在下文中一共展示了RouterInterface::matchRequest方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: matchRequest
/**
* {@inheritdoc}
*/
public function matchRequest(Request $request)
{
if (!$this->router instanceof RequestMatcherInterface) {
throw new \BadMethodCallException('Router has to implement the ' . RequestMatcherInterface::class);
}
return $this->router->matchRequest($request);
}
示例2: getTranslationRoute
/**
* Returns the corresponding route of the given URL for the locale supplied
* If none is found it returns the original route object
*
* @param $oldUrl
* @param $locale
* @return array|\Networking\InitCmsBundle\Component\Routing\Route
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
*/
public function getTranslationRoute($oldUrl, $locale)
{
$cookies = $this->request->cookies ? $this->request->cookies->all() : array();
$oldRequest = Request::create($oldUrl, 'GET', array(), $cookies);
if ($this->request->getSession()) {
$oldRequest->setSession($this->request->getSession());
}
try {
$request = $this->pageHelper->matchContentRouteRequest($oldRequest);
} catch (ResourceNotFoundException $e) {
$request = $oldRequest;
}
if (!($content = $request->get('_content', false))) {
try {
$route = $this->router->matchRequest(Request::create($oldUrl));
} catch (ResourceNotFoundException $e) {
if ($route = $this->router->matchRequest(Request::create('/404'))) {
return $route;
}
throw new NotFoundHttpException(sprintf('Could not find a translation to "%s" for this request"', $locale));
}
if (!array_key_exists('_content', $route)) {
return $route;
}
if (!($content = $route['_content'])) {
return $route;
}
}
if ($content instanceof PageInterface) {
$translation = $content->getAllTranslations()->get($locale);
if (is_null($translation)) {
//@todo does this make sense, or should we throw an exception
return array('_route' => 'networking_init_cms_home');
}
//return a contentRoute object
$contentRoute = $translation->getContentRoute()->setContent($translation);
return ContentRouteManager::generateRoute($contentRoute, $contentRoute->getPath(), '');
}
if ($content instanceof PageSnapshotInterface) {
$content = $this->pageHelper->unserializePageSnapshotData($content);
$translation = $content->getAllTranslations()->get($locale);
if ($translation && ($snapshotId = $translation->getId())) {
/** @var $snapshot PageSnapshotInterface */
$snapshot = $this->om->getRepository($content->getSnapshotClassType())->findOneBy(array('resourceId' => $snapshotId));
if ($snapshot) {
$contentRoute = $snapshot->getRoute();
return ContentRouteManager::generateRoute($contentRoute, $contentRoute->getPath(), '');
}
}
}
if ($this->fallbackRoute) {
return $this->fallbackRoute;
}
if ($route = $this->router->matchRequest(Request::create('/404'))) {
return $route;
}
//no valid translation found
throw new NotFoundHttpException(sprintf('Could not find a translation to "%s" for content "%s"', $locale, $content->__toString()));
}
示例3: getTranslationRoute
/**
* Returns the corresponding route of the given URL for the locale supplied
* If none is found it returns the original route object
*
* @param $oldUrl
* @param $locale
* @return array|\Networking\InitCmsBundle\Entity\ContentRoute
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
*/
public function getTranslationRoute($oldUrl, $locale)
{
/** @var $router RouterInterface */
$route = $this->router->matchRequest(Request::create($oldUrl));
if (!array_key_exists('_content', $route)) {
return $route;
}
$content = $route['_content'];
if ($content instanceof PageInterface) {
$translation = $content->getAllTranslations()->get($locale);
if (is_null($translation)) {
//@todo does this make sense, or should we throw an exception
return array('_route' => 'networking_init_cms_home');
}
//return a contentRoute object
return $translation->getContentRoute()->setContent($translation);
}
if ($content instanceof PageSnapshotInterface) {
$content = $this->serializer->deserialize($content->getVersionedData(), $this->pageManager->getClassName(), 'json');
$translation = $content->getAllTranslations()->get($locale);
if ($translation && ($snapshotId = $translation->getId())) {
/** @var $snapshot PageSnapshotInterface */
$snapshot = $this->om->getRepository($content->getSnapshotClassType())->findOneBy(array('resourceId' => $snapshotId));
if ($snapshot) {
//return a contentRoute object
return $snapshot->getRoute();
}
}
}
if ($this->fallbackRoute) {
return $this->fallbackRoute;
}
if ($route = $this->router->matchRequest(Request::create('/404'))) {
return $route;
}
//no valid translation found
throw new NotFoundHttpException(sprintf('Could not find a translation to "%s" for content "%s"', $locale, $content->__toString()));
}