fix URL::retrieve

This commit is contained in:
Etienne Roudeix
2013-09-04 15:15:38 +02:00
parent f10294fee2
commit b910b0af86
7 changed files with 32 additions and 12 deletions

View File

@@ -169,9 +169,7 @@ class UrlGenerator extends AbstractSmartyPlugin
protected function getCurrentUrl() protected function getCurrentUrl()
{ {
$retriever = URL::init()->retrieveCurrent($this->request); return URL::init()->retrieveCurrent($this->request)->toString();
return $retriever->rewrittenUrl === null ? $retriever->url : $retriever->rewrittenUrl ;
} }
protected function getReturnToUrl() protected function getReturnToUrl()

View File

@@ -23,7 +23,7 @@ class Category extends BaseCategory
public function getUrl($locale) public function getUrl($locale)
{ {
return URL::init()->retrieve('category', $this->getId(), $locale); return URL::init()->retrieve('category', $this->getId(), $locale)->toString();
} }
/** /**

View File

@@ -9,6 +9,6 @@ class Content extends BaseContent
{ {
public function getUrl($locale) public function getUrl($locale)
{ {
return URL::init()->retrieve('content', $this->getId(), $locale); return URL::init()->retrieve('content', $this->getId(), $locale)->toString();
} }
} }

View File

@@ -17,7 +17,7 @@ class Folder extends BaseFolder
public function getUrl($locale) public function getUrl($locale)
{ {
return URL::init()->retrieve('folder', $this->getId(), $locale); return URL::init()->retrieve('folder', $this->getId(), $locale)->toString();
} }
/** /**

View File

@@ -9,6 +9,6 @@ class Product extends BaseProduct
{ {
public function getUrl($locale) public function getUrl($locale)
{ {
return URL::init()->retrieve('product', $this->getId(), $locale); return URL::init()->retrieve('product', $this->getId(), $locale)->toString();
} }
} }

View File

@@ -98,4 +98,12 @@ class RewritingRetriever
$this->rewrittenUrl = $this->search->getUrl(); $this->rewrittenUrl = $this->search->getUrl();
} }
} }
/**
* @return mixed
*/
public function toString()
{
return $this->rewrittenUrl === null ? $this->url : $this->rewrittenUrl;
}
} }

View File

@@ -124,25 +124,32 @@ class URL
} }
/** /**
* Retrieve a rewritten URL from a view, a view id and a locale
*
* @param $view * @param $view
* @param $viewId * @param $viewId
* @param $viewLocale * @param $viewLocale
* *
* @return null|string * @return RewritingRetriever You can access $url and $rewrittenUrl properties
*/ */
public function retrieve($view, $viewId, $viewLocale) public function retrieve($view, $viewId, $viewLocale)
{ {
$rewrittenUrl = null;
if(ConfigQuery::isRewritingEnable()) { if(ConfigQuery::isRewritingEnable()) {
$rewrittenUrl = $this->retriever->loadViewUrl($view, $viewLocale, $viewId); $this->retriever->loadViewUrl($view, $viewLocale, $viewId);
} }
return $rewrittenUrl === null ? self::viewUrl($view, array($view . '_id' => $viewId, 'locale' => $viewLocale)) : $rewrittenUrl; return $this->retriever;
} }
/**
* Retrieve a rewritten URL from the current GET parameters
*
* @param Request $request
*
* @return RewritingRetriever You can access $url and $rewrittenUrl properties or use toString method
*/
public function retrieveCurrent(Request $request) public function retrieveCurrent(Request $request)
{ {
$rewrittenUrl = null;
if(ConfigQuery::isRewritingEnable()) { if(ConfigQuery::isRewritingEnable()) {
$view = $request->query->get('view', null); $view = $request->query->get('view', null);
$viewLocale = $request->query->get('locale', null); $viewLocale = $request->query->get('locale', null);
@@ -165,6 +172,13 @@ class URL
return $this->retriever; return $this->retriever;
} }
/**
* Retrieve a rewritten URL from the current GET parameters or use toString method
*
* @param $url
*
* @return RewritingResolver
*/
public function resolve($url) public function resolve($url)
{ {
$this->resolver->load($url); $this->resolver->load($url);