User přímo do šablony?
- David Grudl
- Nette Core | 8227
Nebylo by šikovné, aby jednou z automaticky předávaných proměnných do šablony byl Environment::getUser() příp. identita + flag authenticated?
- JakubJarabica
- Gold Partner | 184
V projektoch v šablóne mám (naplnené v BasePresenteri) $loggedIn a $identity, zvyčajne to používam takto:
<?php
{if $loggedIn}
Vitaj, {$identity->name}!
{else}
Prihlás sa!
{/if}
?>
Keďže to je pár riadkov kódu, o zavadím sporadicky, tak neriešim či to vo FW je alebo nie, bolo by však vhodné dať tomu rozumné názvy premenných, ak hrozia teoretické kolízie s premennými programátora(i keď ak aj sa použije rovnaká premenná v template, prepíšem pôvodnú).
edit: Prefix „nf_“ by možno na škodu nebol :)
Editoval JAM3SoN (11. 2. 2010 19:00)
- Honza Marek
- Člen | 1664
Já mám $user
jako opravdickýho usera. Řešim tam i věci
typu
{if $user->isAllowed("page", "edit")}<a href="{link edit}">Upravit</a>{/if}
.
Takže Ondřejův návrh by mě omezil.
Editoval Honza Marek (11. 2. 2010 20:53)
- Ondřej Mirtes
- Člen | 1536
Nojono, ale jak to udělat? Budeme mít $user, $identity a $isAuthenticated? To by bylo asi nejlepší, protože já v 99% případech potřebuji sahat jen do identity, ale např. Honzovi by chyběl samotný user. A mít jen usera a v 99% případů psát $user->identity, to asi ne.
- pekelnik
- Člen | 462
Ja to pouzivam v soucasne dobe takto:
<?php
// BasePresenter
public function startup()
{
// Don't start session for forwarded requests
$session = Environment::getSession();
if (! $session->isStarted()) {
$session->setOptions(array(
'cookie_path' => '/',
'cookie_domain' => '.' . $config->domain)
);
$session->start();
}
// User
$this->template->user = Environment::getUser();
}
?>
Jeste jednou bych chtel bez emoci nadhodit jednu myslenku.
Ve zkratce se jedna o to, ze uzivatel by prestal byt napul session, naopak by mohl nabyvat instance libovolne tridy (IUser)
Proc to rvu sem: protoze by to prave vyresilo tyhle veci:
Ondrej:
Nojono, ale jak to udělat? Budeme mít $user, $identity a $isAuthenticated?
Pro zajemce je zde cele vlakno.
https://forum.nette.org/…strikes-back
David nakonec navrhnul $guestIdentity. To zminene problemy resi, lec ne zcela dle meho gusta :)
Prave v tomto vlakne se objevuji aspekty, ktere se mi nejak nepodarilo v puvodni diskusi vyzdvihnout ;)
Honza:
Já mám $user jako opravdickýho usera.
Ja taky :)
- Honza Marek
- Člen | 1664
v6ak napsal(a):
V šablonách bych byl pro minimální zapatlávání prostoru proměnnými bez namespace (teda spíš prefixu).
Já jsem zase proti tomu, aby v šabloně byla půlka proměnných s prefixem a půlka bez :)
- sodae
- Nette Evangelist | 250
Možna to tu zaznělo, ale shrnu co souhlasím a co by se mělo implementovat do 1.0, podle mého názoru, ohledně tohohle topicu:
do Nette\Security\(I)Identity:
- isAllowed
do šablon:
- $user jako Identity
- makro: (is|if)Allowed
v případě že není přihlášen $user = NULL
Tohle normálně používám.
BTW: Již podobné jsem navrhoval ale nikdo se nevyjádřil :(
- David Grudl
- Nette Core | 8227
Přidávat samotnou identitu je nedostatečné. Je potřeba předat celý User.
Zajímalo by mě, jak to myslíte (konkrétně) s tím prefixováním.
Ad pekelnik: session_path nemusís nastavovat, session_domain nastavuj v bootstrapu. Session::start() nemá v presenteru co dělat, taky patří do bootstrapu. V posledních revizích Application startuje session samo.
- Honza Kuchař
- Člen | 1662
Ad Environment
: dobrý nápad, ale ve špatném tématu!
Založte prosím další téma.
- David Grudl
- Nette Core | 8227
Jod napsal(a):
Keby bola Environment singleton tak by šlo volať {$env->user} {$env->config[‚abc‘]} {$env->variable[‚xyz‘]}.
Teoreticky proč ne, ale skutečně se to v šablonách využije?