Metody presenteru v komponente
- len123
- Člen | 3
Zdravim.
Potrebujem cez komponentu pridat produkt do session + prekreslit nakupny kosik
(meni sa tam pocet produktov).
v komponente som vytvoril tuto metodu, ktora by to mala urobit:
public function handleAddtocart($productId, $count = 1){
$this->redrawControl('cart');
if ($count>0){
$session = $this->presenter->getSession();
if (!isset($session->products[$productId])) $session->products[$productId] = $count;
else $session->products[$productId] += $count;
}
}
Vracia mi to ale chybu:
Call to undefined method
App\FrontModule\Pages\SpecialnaPonuka::redrawControl()
nedostanem sa ani k tym sessions, takze nespravne volam tieto metody
presenteru.
V nette som este nerobil, takze je to mozno blba otazka :)
Dakujem
- David Matějka
- Moderator | 6445
Co pouzivas za nette? redrawControl je v nette >= 2.1, v 2.0 je to invalidateControl
- len123
- Člen | 3
Je to
VERSION = ‚2.1-dev‘
…
invalidateControl funguje. Ale k session sa este nedostanem, hadze to chybu.
Asi sa metoda na prisup k sessions vola tiez nejako inak.
V @layout.latte mam snippet cart, ktory zinvalidujem v handleAddtocart(), prebehne mi aj request, ale server nevrati ziadne zinvalidovane snippety.
Pri prvom volani (vykresleni celej stranky) nastavujem v snippete cart pocet produktov PagePresenter v metode renderDefault takto (priklad, ked sa dostanem k sessions tak tam bude scitanie produktov v kosiku):
$this->template->cartCount = 0;
V komponente SpecialnaPonuka v metode handeAddtocart prepisem tuto premennu a zinvalidujem snippet cart.
$this->template->cartCount = 8;
$this->invalidateControl('cart');
idem na to dobre? lebo mi to nefunguje :)
Editoval len123 (11. 3. 2014 10:53)
- Pavel Macháň
- Člen | 282
len123 napsal(a):
Je to
VERSION = ‚2.1-dev‘…
Doporucuju prejit na 2.1 stable
- David Matějka
- Moderator | 6445
K session by ses takhle mel dostat – i kdyz to neni idealni, spravne by
sis mel vyzadat session jako zavislost – ale to az jindy :)
problem bude, ze nepouzivas sekce, viz dokumentace
muzes take pouzit shortcut
->presenter->getSession('sectionName')
- len123
- Člen | 3
ja by som nikdy nepouzil dev verziu na vyvoj produkcnej verzie webu, ale dostal som za ulohu upravit web, ktory bol napisany v tejto verzii. takze to bude este zabava :)
k tym session asi budem pristupovat cez $_SESSION, ten ajax poriesim tiez „rucne“ :) tak dakujem zatial za pomoc