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()
{
$retriever = URL::init()->retrieveCurrent($this->request);
return $retriever->rewrittenUrl === null ? $retriever->url : $retriever->rewrittenUrl ;
return URL::init()->retrieveCurrent($this->request)->toString();
}
protected function getReturnToUrl()

View File

@@ -23,7 +23,7 @@ class Category extends BaseCategory
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)
{
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)
{
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)
{
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();
}
}
/**
* @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 $viewId
* @param $viewLocale
*
* @return null|string
* @return RewritingRetriever You can access $url and $rewrittenUrl properties
*/
public function retrieve($view, $viewId, $viewLocale)
{
$rewrittenUrl = null;
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)
{
$rewrittenUrl = null;
if(ConfigQuery::isRewritingEnable()) {
$view = $request->query->get('view', null);
$viewLocale = $request->query->get('locale', null);
@@ -165,6 +172,13 @@ class URL
return $this->retriever;
}
/**
* Retrieve a rewritten URL from the current GET parameters or use toString method
*
* @param $url
*
* @return RewritingResolver
*/
public function resolve($url)
{
$this->resolver->load($url);