premenna session ako pole
- kocourPB
- Člen | 47
Zdravim.
Potrebujem vytvorit nakupny kosik, do ktoreho sa budu pridavat produkty
z databaze (nazov, popis, cena).
Rad by som tento kosik vytvoril pomocou session. Ako do jednej session premennej
vlozit viac riadkov z DB? Fakt si s tym neviem rady, tak budem rad ak mi
poradite.
Zatial mam nieco taketo zufale, ale to mi uklada len jeden riadok z tabulky ako pole.
class HomepagePresenter extends BasePresenter
{
private $produktRepository;
private $session;
public function __construct(\ProduktRepository $produktRepository, Nette\Http\Session $session) {
$this->produktRepository = $produktRepository;
$this->session = $session->getSection('kosik');
}
public function renderDefault() {
$this->template->produkty = $this->produktRepository->fetchAll();
}
public function actionCart() {
$this->template->kosikVypis = $this->session->kosik;
}
public function actionAddToCart($id) {
foreach ($this->produktRepository->fetchById($id) as $row) {
$pole = ["produkt_id" => $row->produkt_id, "nazov" => $row->nazov, "nazov" => $row->popis, "nazov" => $row->cena];
$this->session->kosik = $pole;
}
$this->redirect('homepage:cart');
}
}
Potreboval by som nieco ako nasledujuci kod, ale takto mi to nefrci. Potrebujem potom tie polozky zo session premennej vypsat klasicky do latte cez foreach, na kazdom riadku bude nova polozka z kosiku.
$this->session->kosik[0] = $this->produktRepository->fetchById(1);
$this->session->kosik[1] = $this->produktRepository->fetchById(2);
Diky moc.
- Jiří Nápravník
- Člen | 710
Zrovna u nakupniho kosiku bych doporucil do session si ulozit nejaky id a samotny kosik do databaze. Protoze ty data v session mohou byt po chvili zastarale (zmenis cenu, popis). No a taky uvidis ty jako admin, co si lidi pridavaji do kosiku (a nedokonci objednavku), o co je tedy potencialni zajem.