Kam ukladate nastavenie jazyka

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
srigi
Nette Blogger | 558
+
0
-

Prehladal som velku cast fora ale nasiel som iba to, ze niektori pouzivate perzistentne parametre.

K veci, user pride na webovku, predlozi sa mu nejaky default lang, prip. sa detekuje cez HTTP. Teraz treba lang prenasat medzi strankami, napr. aj preto ze v sablonach treba generovat URL parametre pre routing.

<?php
    $router[] = new Route('<lang [a-z]{2}>/product/<id>', array(
        'module'    => 'Front',
        'presenter' => 'Product',
        'action'    => 'default'
    ));
?>

Perzistentne parametre nepouzivam a nemienim na tom nic menit. Zo Symfony si pamatam skvelu vychytavku

<?php
class fooActions extends sfActions
{
  public function executeIndex()
  {
    $lang = $request->getParameter('lang', $this->getUser()->getCulture()); // druhy parameter getParameter() je failsafe, ked ten z routra je null
    ...
    ...
?>

V sablone potom

<?php
<?php echo(link_to('Listuj stranky', 'page/list?lang=' . $sf_user->getCulture())); ?>
?>

Cize Symfony to uklada do objektu sfUser, ktory je dostupny vsade. Je mozne nejako tento parameter ukladat do nasho objektu Nette\Web\User? Samozrejme tak aby sa prenasal medzi strankami (session). Je vobec mozne si do Nette\Web\User ukladat svoje veci spojene s aktualnym userom?
THX.

Editoval srigi (18. 2. 2010 21:06)

Honza Marek
Člen | 1664
+
0
-

srigi napsal(a):
Je vobec mozne si do Nette\Web\User ukladat svoje veci spojene s aktualnym userom?

Na ukládání „svojich věcí“ slouží identita usera. Dá se získat pomocí $user->getIdentity() a incializuje se při autentikaci.

srigi
Nette Blogger | 558
+
0
-

Honza Marek napsal(a):

srigi napsal(a):
Je vobec mozne si do Nette\Web\User ukladat svoje veci spojene s aktualnym userom?

Na ukládání „svojich věcí“ slouží identita usera. Dá se získat pomocí $user->getIdentity() a incializuje se při autentikaci.

OK a ked uz mam identitu, ako si tak tu premennu ulozim? Normalne ju tam naperem ako property ($identity->lang = 'sk')? Ostane perzistentna?

vlki
Člen | 218
+
0
-

Magický setter u Identity by měl zajistit, že se uloží.

A vzhledem k tomu, že se Identity ukládá do session, měla by ta informace zůstat pro uživatele persistentní.

Editoval vlki (21. 2. 2010 22:24)