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
+
0
-

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)