Constructs absolute URL from Request object.
public constructUrl ( Nette\Application\Request $appRequest, |
||
$appRequest | Nette\Application\Request | |
$refUrl | ||
return | string | null |
/** * @param \Nette\Application\Request * @param Nette\Web\Uri * @return string */ public function constructUrl(\Nette\Application\Request $appRequest, \Nette\Http\Url $refUri) { if ($params = $this->doFilterParams($this->getRequestParams($appRequest), $appRequest, self::WAY_OUT)) { $appRequest = $this->setRequestParams($appRequest, $params); return parent::constructUrl($appRequest, $refUri); } return NULL; }
/** * @param Application\Request $appRequest * @param Nette\Http\Url $refUrl * @return NULL|string */ public function constructUrl(Application\Request $appRequest, Nette\Http\Url $refUrl) { $parameters = $appRequest->getParameters(); if (isset($parameters['action']) && $parameters['action'] == FALSE) { $parameters['action'] = NULL; } $appRequest->setParameters($parameters); return parent::constructUrl($appRequest, $refUrl); }
/** * @param \Nette\Application\Request $appRequest * @param \Nette\Http\Url $refUrl * @return string|null */ public function constructUrl(Request $appRequest, Url $refUrl) { $presenter = $appRequest->getPresenterName(); if (!Strings::startsWith($presenter, self::SUBMODULE_NAME . ':')) { return null; } if (Strings::endsWith($presenter, ':' . self::DEFAULT_PRESENTER)) { $presenter = substr($presenter, 0, -strlen(':' . self::DEFAULT_PRESENTER)); } $appRequest->setPresenterName(substr($presenter, strlen(self::SUBMODULE_NAME . ':'))); return parent::constructUrl($appRequest, $refUrl); }
/** * {@inheritDoc} */ public function constructUrl(\Nette\Application\Request $appRequest, \Nette\Http\Url $refUrl) { if (!$this->matchMethod($appRequest)) { return null; } $parameters = $appRequest->parameters; // is matched, remove _method parameter ! if (isset($parameters)) { unset($parameters['_method']); $appRequest->setParameters($parameters); } return parent::constructUrl($appRequest, $refUrl); }
/** * Constructs absolute URL from Request object * * @param \Nette\Application\Request $appRequest * @param \Nette\Http\Url $refUrl * @return string|NULL */ public function constructUrl(Application\Request $appRequest, \Nette\Http\Url $refUrl) { if ($appRequest->getPresenterName() != $this->getTargetPresenter()) { return NULL; } $params = $appRequest->getParameters(); if (!isset($params['id']) && isset($params[0])) { $params['id'] = $params[0]; unset($params[0]); $appRequest->setParameters($params); } return parent::constructUrl($appRequest, $refUrl); }
/** * @param Application\Request $appRequest * @param Http\Url $refUrl * @return NULL|string */ public function constructUrl(Application\Request $appRequest, Http\Url $refUrl) { if (count($this->actionDictionary) > 0) { $appRequest = clone $appRequest; $params = $appRequest->getParameters(); $params['action'] = 'default'; // so the request matches with route with action dictionary $appRequest->setParameters($params); } $url = parent::constructUrl($appRequest, $refUrl); if ($url === NULL) { return NULL; } $httpUrl = new Http\Url($url); $httpUrl->query = Strings::replace($httpUrl->query, '/action=([a-zA-Z0-9_+%-]*)/i', ''); return $httpUrl->getBasePath() . $httpUrl->getRelativeUrl(); }
/** * Constructs absolute URL from Request object. * * @param Nette\Application\Request * @param Nette\Http\Url * @return string|NULL */ public function constructUrl(Request $appRequest, Url $refUrl) { if (!$this->checkConnectionFactory->invoke()) { return NULL; } $parameters = $appRequest->getParameters(); $key = (array) $parameters; unset($key['_route']); unset($key['_page']); if (isset($key['route']) && is_object($key['route'])) { $key['route'] = $key['route'] instanceof RouteEntity ? $key['route']->id : $key['route']->route->id; } unset($key['page']); $data = $this->cache->load($key); if ($data) { return $data; } if (isset($parameters['special'])) { $special = $parameters['special']; unset($parameters['special']); if (count($this->languages) > 1) { if (!isset($parameters['lang'])) { $parameters['lang'] = $this->defaultLanguage; } try { if ($special === 'main') { $route = $this->getRouteRepository()->createQueryBuilder('a')->leftJoin('a.page', 'm')->leftJoin('m.language', 'p')->andWhere('p.alias = :lang OR a.language IS NULL')->andWhere('m.mainRoute = a.id AND a.url = :url')->setParameter('lang', $parameters['lang'])->setParameter('url', '')->getQuery()->getSingleResult(); } else { $route = $this->getRouteRepository()->createQueryBuilder('a')->leftJoin('a.page', 'm')->leftJoin('m.language', 'p')->where('m.special = :special')->andWhere('p.alias = :lang OR a.language IS NULL')->andWhere('m.mainRoute = a.id')->setParameter('special', $special)->setParameter('lang', $parameters['lang'])->getQuery()->getSingleResult(); } } catch (NoResultException $e) { return NULL; } } else { try { if ($special === 'main') { $route = $this->getRouteRepository()->createQueryBuilder('a')->andWhere('a.url = :url')->setParameter('url', '')->getQuery()->getSingleResult(); } else { $route = $this->getRouteRepository()->createQueryBuilder('a')->leftJoin('a.page', 'm')->andWhere('m.special = :special')->andWhere('m.mainRoute = a.id')->setParameter('special', $special)->getQuery()->getSingleResult(); } } catch (NoResultException $e) { return NULL; } } $route = $route->id; } elseif (isset($parameters['route'])) { $route = is_object($parameters['route']) ? $parameters['route'] instanceof ExtendedRouteEntity ? $parameters['route']->route->id : $parameters['route']->id : $parameters['route']; unset($parameters['route']); } elseif (isset($parameters['_route'])) { $route = $parameters['_route']->id; } elseif (isset($parameters['routeId'])) { $route = $parameters['routeId']; } else { return NULL; } $domain = $parameters['_domain']; unset($parameters['_route']); unset($parameters['_page']); unset($parameters['_domain']); unset($parameters['routeId']); unset($parameters['pageId']); $this->modifyConstructRequest($appRequest, $this->getRouteRepository()->find($route), $parameters, $domain); $data = parent::constructUrl($appRequest, $refUrl); $this->cache->save($key, $data, array(Cache::TAGS => array(RouteEntity::CACHE))); return $data; }