Najelegantnejšie riešenie hodnotenia príspevkov

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

Zdravím,

robím web, na ktorom sa budú dať hodnotiť príspevky systémom +/- a rozmýšľam, ako to urobiť čo najlepšie. Moje aktuálne riešenie vyzerá tak, že pri zavolaní akcie detail si PostPresenter zapamätá ID aktuálneho príspevku a pre hodnotenie sa potom volajú signály plus a minus, ktoré si toto ID „prevezmú“ (mimo parametrov). Problém je v tom, že tieto signály neviem zavolať napríklad zo šablóny list, ktorá vykresľuje viacero príspevkov, a presenter si teda nepamätá žiadne ID. Dá sa nejak vytvoriť odkaz, ktorý bude volať tieto signály cez akciu detail? Lebo zatiaľ som neprišiel na to, ako takú adresu poskladať a keby aj, tak sa mi nezdá, že by to bolo optimálne riešenie. Ako teda urobiť toto hlasovanie? Napadajú mi dve možnosti, pričom každá z nich má svoje pre a proti:

  1. Danému signálu by som predával parameter s ID daného príspevku. Toto síce porieši problém s volaním signálu zo šablony list, no pri detaile príspevku by som mal v adrese pri hlasovaní zbytočne dvakrát ID daného príspevku, čo mi zrovna nepríde ako najefektívnejšie riešenie.
  2. Na hodnotenie príspevku by som si vytvoril špeciálnu komponentu, ktorá by sa starala o všetko potrebné. V tomto prípade mi to však príde zbytočné vytvárať si extra komponentu pre takú drobnosť akou je hlasovanie.

Ktorou cestou sa vybrať? Prípadne aké mám ešte možnosti?

Michal Vyšinský
Člen | 608
+
0
-

Ahoj. Nevim, co se ti nelibi na prvnim reseni. Po handle signalu stejne presmerovavas ne? A pokud posilas v signalu id prispevku jako parametr id a mas jej tak pojmenovany i v route, tak v url dvakrat nebude. Budes mit /neco/5?do=hlasuj. Omluv diakritiku pisu z mobilu.

livthomas
Člen | 24
+
0
-

Díky, ja som si myslel, že na to bude treba nejaký extra parameter. Až teraz zisťujem, že si to vlastne berie to pôvodne ID z adresy.

EDIT: Nie je ID ako ID. V šablóne detail to síce znamená číslo príspevku, ale v šablóne list to však predstavuje číslo aktuálnej stránky. Takže to budem musieť robiť tak, ako som pôvodne zamýšľal (cez nejaký extra parameter).

Editoval livthomas (3. 10. 2012 17:09)

Matúš Matula
Člen | 257
+
0
-

Tak ID IMHO nie je najlepsi nazov pre parameter cisla stranky, ale mozno mas na to svoje dovody (napasovanie detail a list na 1 routu?). Kazdopadne nevidim v tom ziadny problem, kedze ako @CherryBoss napisal, po vykonani signalu hadam presmeruvas, cize sa ti v url ziaden dalsi parameter nezobrazi.

livthomas
Člen | 24
+
0
-

Áno, zatiaľ mám všetko napasované na jednu routu. Veď čím viac rout, tým je to vraj náročnejšie. Teraz netvrdím, že všetko budem mať robené cez tú jednu, ale pre každú akciu každého presenteru predsa nebudem mať extra routu. A konkrétne v tomto prípade, pri akciách detail a list mi to príde celkom logické, že používajú jednu routu, keďže obe potrebujú jeden parameter (buď ID príspevku alebo číslo stránky). Ale kľudne napíšte, ako nejak vhodne robiť tie routy. Rád si nechám poradiť. :)

Ale späť k téme. Nakoniec som to spravil cez komponentu. Príde mi to teraz také prehľadnejšie a viac sa to asi blíži nejakému ideálnemu riešeniu.

Matúš Matula
Člen | 257
+
0
-

Ano, cim viac rout, tym narocnejsie..ked ich ale udrzis v rozumnom pocte, tak rozdiel vo vykone nespoznas. islo mi len o semantiku toho parametra, ale to je vec nazoru a ‚pocitu‘ :)
kazdopadne k teme, pouzitie komponenty je urcite lepsie riesenie, len som sa drzal toho, co si pisal vyssie, ze sa ti to zda ‚zbytocne‘ :-) Z hladiska znovupouzitelnosti ti ale odporucam aj do buducnosti aj pre taketo ‚drobnosti‘ vytvarat komponenty ;-)