Session proměnná se neukládá
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- mfajfr
- Člen | 26
Ahoj,
tvořím administraci eshopu a dělám košík přes session. Postupoval jsem
dle kuchařky a session se mi ne a ne uložit.
Takhle to tvořím:
<?php
public function addToCartSubmit(BuyProductForm $form){
$vars = array();
$vars['idProvider'] = $this->getParameter('idProvider');
$paginator = $this->getComponent('paginator');
$vars['paginator-page'] = $paginator->page;
$impPaginator = $this->getComponent('impPaginator');
$vars['impPaginator-page'] = $impPaginator->page;
$values = $form->getValues();
if(false){
//cookie cart
}else{
$buyCarts = $this->getSession('buyCarts');
$buyCarts->setExpiration(0, 'buyCarts');
if(!isset($buyCarts->cart[$vars['idProvider']]))$buyCarts->cart[$vars['idProvider']] = new SessionBuyCart (null, $this->_db);
if(!$buyCarts->cart[$vars['idProvider']]->isExist($values->idProduct)){
$buyCarts->cart[$vars['idProvider']]->addToCart($values);
}
else{
$buyCarts->cart[$vars['idProvider']]->updateQuantity($values);
}
}
$this->flashMessage('Zboží bylo přidáno do košíku.', 'ok');
//$this->redirect('ProviderProduct:buy');
}
?>
Takhle se to snažím dostat do šablony:
<?php
public function renderBuy($idProvider){
if(false){
}else{
$buyCarts = $this->getSession('buyCarts');
$this->template->buyCart = $buyCarts->cart[$idProvider];
}
}
?>
Pokud je lepší způsob jak to řešit, tak řekněte. Rád se poučím.
Předem díky za pomoc.
- jiri.pudil
- Nette Blogger | 1032
Co znamená „ne a ne uložit“? Skončí to chybou, nebo to projde, ale neuloží data?
Všiml jsem si jen, že špatně nastavuješ exspiraci. Druhý argument má
být název proměnné, které exspiraci nastavuješ, takže v tvém případě
by tam mělo být spíš cart
než buyCarts
,
popřípadě vůbec nic (čímž se exspirace nastaví pro celou sekci):
$buyCarts->setExpiration(0);