Pridanie produktu do košíka podľa užívateľa

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
SontoEremo
Člen | 341
+
0
-

Zdravím,
Viem, že sa to tu už riešilo nespočetne veľa krát ale všetko je už staré vlákno a tak trocha nepochopené…

Chcem sa preto spýtať ako riešite pridanie produktu prihláseným užívateľom ktorý sa bude zobrazovať v hlavičke stránky na celom webe, podľa id užívateľa neviem ako na tabuľku v správnom tvare.
Nepotrebujeme vypisovať celé kódy ale len nakopnutie alebo ak má niekto na Gidhub ukážku (pridanie, odstránenie produktu) budem veľmi vďačný.

MartinitCZ
Člen | 580
+
0
-

Ukládat do session a zbytečně to necpat do db.

SontoEremo
Člen | 341
+
0
-

@MartinitCZ díky za odpoveď no stále je to mätúce napr.
Mám toto

/**
    * AddToBasket factory.
    * @return Form
    */
    protected function createComponentAddToBasketForm() {
        $addToBasket = new Form;
        $addToBasket->getElementPrototype()->novalidate = 'novalidate';
        $addToBasket->addText('number')
                    ->setAttribute('class', 'form-control')
                    ->setDefaultValue('1');
        $addToBasket->addSubmit('addToBasketBtn', 'Pridať do košíka');
        $addToBasket->onSuccess[] = $this->addToBasketFormSuccessSubmited;
        return $addToBasket;
    }

    /**
    * @param Form $addToBasket
    */
    public function addToBasketFormSuccessSubmited(Form $addToBasket) {
        $values = $addToBasket->getValues();

    }

Ale ako som prechádzal fórum tak som si všimol, že každý má

public function handleAdd() {
	......
}

Takže čo je lepšie pridávať pomocou formulára alebo pomocou handleAdd?
@MartinitCZ Ukládat do session a zbytečně to necpat do db.
Ale ako potom vypíšem (názov produktu, počet a cenu?) tak som si mysle, že to treba hádzať do DB

MartinitCZ
Člen | 580
+
+1
-

Osobně bych volil formulář, jelikož můžeš mít input pro počet kusů.

Do session si uložíš, id produktu a počet kusů.
A při výpisu provedeš foreach přes produkty ze session a dotaháš informace o produktu z db.

Editoval MartinitCZ (5. 10. 2014 16:58)

SontoEremo
Člen | 341
+
0
-

@MartinitCZ díky za opdoveď…
prepáč my som tak trocha zmetený ale
Ukládat do session a zbytečně to necpat do db. ← Najprv napíšeš toto
a potom
dotaháš informace z db.
Tak som mimo mám to teda uložiť do toho db alebo nie? veľmi sa ospravedlňujem ale moc tomu nerozumiem.

David Matějka
Moderator | 6445
+
+1
-

do session si ulozis ID produktu, ktery uzivatel pridal do kosiku (a jejich pocet). Pak pri zobrazovani kosiku dle techto ID vyberes konkretni zaznamy z DB

Editoval matej21 (5. 10. 2014 16:04)

MartinitCZ
Člen | 580
+
0
-

Upravil jsem tu větu. Samozřejmě jsem myslel informace o produktu, nikoliv o košíku. ;)

SontoEremo
Člen | 341
+
0
-

Fajn ale tak to musím mať produkty uložené v DB alebo?…
Mohol by si to prosím ta trocha rozviesť?
do session si ulozis ID produktu, ktery uzivatel pridal do kosiku (a jejich pocet). Pak pri zobrazovani kosiku dle techto ID vyberes konkretni zaznamy z DB

David Matějka
Moderator | 6445
+
0
-

No kde mas ulozene produkty ted?

SontoEremo
Člen | 341
+
0
-

mám ich vypísané v šablóne.

MartinitCZ
Člen | 580
+
+1
-

To můžeš mít teoreticky taky, ale pro udržitelnost a použitelnost je to opruz.
Takže si vytvoř nějakou tabulku v db, třeba products, a do ní si ulož informace o produktu.

SontoEremo
Člen | 341
+
0
-

@MartinitCZ Ďakujem za opdoveď…
Fajn takže som si nahodil na skúšku dva produkty do DB a stiahol ich do šablóny na výpis samozrejme funguje ale viem, že je to na 10% OK.
Takže mám však problém ako na to aby vygenerovalo stránku napr. moja-domena.xx/projektshop/hardisk/500gb ? a aby sa tam nachádzali iba informácie o tomto produkte?
P.S: so šablónou napr. 500gb nemám problém ju vytvoriť ja ju potrebujem vygenerovať ak ma rozumiete :)

samozrejme vopred všetkým Ďakujem.

Dragonaut
Člen | 33
+
0
-
class ProjektshopPresenter extends BasePresenter
{
	public function renderItem($id)
	{
		$item = <dotaz do db na produkt podle $id>
		$this->template->item = $item;
	}
}

pak budes mit template, kde $item vypíšeš.

Url pak bude vypadat jako moja-domena.xx/projektshop/<id-produktu>
případně by asi šlo i například moja-domena.xx/projektshop/<id-produktu>-<nazev>
pokud si pohraješ s routováním.

Editoval Dragonaut (7. 10. 2014 14:57)