Kam správne zakomponovať event onLoggedIn[]
- sucho
- Člen | 57
Zdravím
Chcel by som spustiť po prihlásení užívateľa event
onLoggedIn[]
mal by spustiť funkciu umiestnenú v repozitári
Kam to umiestniť aby sa to vykonalo pri prihlásení z akéhokoľvek
formulára
je tam závislosť na User a Session
Ide o to že mám spravený v Eshope Wishlist
ak je užívateľ odhlásený tak položky ukladá do Session
a keď sa prihlási tak nech ich presunie do DB
Vytvoril som aj samostatnú Classu
class ShopWishlistRepositoryLoader
{
public function __construct(
ShopWishlistRepository $shopWishlistRepository,
\Nette\Security\User $user,
\Nette\Http\Session $session
) {
$this->shopWishlistRepository = $shopWishlistRepository;
$this->session = $session;
$user->onLoggedIn[] = array($this, 'addItemsAfterLogging');
}
public function addItemsAfterLogging()
{
$session = $this->session->getSection('shopWishlist');
if ($session) {
$this->shopWishlistRepository->addItemsAfterLogging($session);
}
}
}
- jiri.pudil
- Nette Blogger | 1032
Když tu třídu zaregistruješ jako službu s tagem run
,
vytvoří se (zavolá se konstruktor, a tedy se navěsí ta funkce na událost)
automaticky při inicializaci kontejneru:
services:
- {class: ShopWishlistRepositoryLoader, tags: [run]}
Kdybys chtěl robustnější řešení, podívej se na Kdyby/Events.
- Felix
- Nette Core | 1245
Nebo muzes zkusit jednodussi Minetro/Events.
Pripadne muzes navazat addItemsAfterLogging
rovnou
v configu.
services:
shopRepositoryLoader: ShopWishlistRepositoryLoader
user:
setup:
- "?->onLoggedIn[] = [@shopRepositoryLoader, 'addItemsAfterLogging']"(@self)
Editoval Felix (26. 7. 2015 17:46)
- Filip Procházka
- Moderator | 4668
Myslím si že to co posílal @Felix fungovat nebude, správně takto
services:
shopRepositoryLoader: ShopWishlistRepositoryLoader
user:
setup:
- "?->onLoggedIn[] = [?, 'addItemsAfterLogging']"(@self, @shopRepositoryLoader)
- Felix
- Nette Core | 1245
Filip Procházka napsal(a):
Myslím si že to co posílal @Felix fungovat nebude, správně takto
services: shopRepositoryLoader: ShopWishlistRepositoryLoader user: setup: - "?->onLoggedIn[] = [?, 'addItemsAfterLogging']"(@self, @shopRepositoryLoader)
Zkousel jsem to v poslednim Nette. Myslim, ze je to ekvivalent k tomu tvemu.
- sorm
- Člen | 8
Felix napsal(a):
Filip Procházka napsal(a):
Myslím si že to co posílal @Felix fungovat nebude, správně takto
services: shopRepositoryLoader: ShopWishlistRepositoryLoader user: setup: - "?->onLoggedIn[] = [?, 'addItemsAfterLogging']"(@self, @shopRepositoryLoader)
Zkousel jsem to v poslednim Nette. Myslim, ze je to ekvivalent k tomu tvemu.
Pro případ, že by to někdo i po roce chtěl zkoušet – tak to od @Felix nefunguje, musí se použít to od @FilipProcházka
Prověřeno hard way.