constructUrl() public method

Constructs absolute URL from Request object.
public constructUrl ( Nette\Application\Request $appRequest, Url $refUrl ) : string | null
$appRequest Nette\Application\Request
$refUrl Nette\Http\Url
return string | null
Example #1
0
 /**
  * @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);
 }
Example #3
0
 /**
  * @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);
 }
Example #4
0
 /**
  * {@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);
 }
Example #5
0
 /**
  * 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);
 }
Example #6
0
 /**
  * @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();
 }
Example #7
0
 /**
  * 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;
 }