Detekce nastaveného jazyka v URL
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- maarlin
- Člen | 207
Vím, že to tu nedávno někdo řešil na fóru, zajímá mě, zda jste došli k nějakému použitelnému řešení, resp. zda se bude něco přidávat přímo do Nette.
Já jsem celou záležitost vyřešil takto – v podstatě jsem vygeneroval nový PresenterRequest:
class LanguageRouter extends NRoute
{
private $setLang;
public function match(IHttpRequest $httpRequest)
{
$appRequest = parent::match($httpRequest);
if ($this->setLang == '') {
$this->setLang = $appRequest->params['lang'];
}
return $appRequest;
}
public function constructUrl(NPresenterRequest $appRequest, IHttpRequest $httpRequest)
{
$params = $appRequest->getParams();
if (!isset ($params['lang'])) {
$params['lang'] = $this->setLang;
}
$newRequest = new NPresenterRequest($appRequest->getPresenterName(),
$appRequest->getMethod(), $params, $appRequest->getPost(),
$appRequest->getFiles());
return parent::constructUrl($newRequest, $httpRequest);
}
}
Napadlo mě, že by bylo fajn mít možnost udat přímo v definici té routy parametry, které se vždy přepíšou hodnotou z URL, pokud je v URL nastavena.
Editoval maarlin (9. 2. 2010 15:37)