Pridanie produktu do košíka podľa užívateľa
- SontoEremo
- Člen | 341
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ý.
- SontoEremo
- Člen | 341
@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
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
@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
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
Upravil jsem tu větu. Samozřejmě jsem myslel informace o produktu, nikoliv o košíku. ;)
- SontoEremo
- Člen | 341
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
- MartinitCZ
- Člen | 580
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
@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
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)