site vezérléselmélet
Sziasztok!
Egy olyan kérdésem lenne, hogy Ti hogy oldjátok meg bizonyos oldalak vezérlését?!
Adott mondjuk egy admin felület, ahol a userek kezelését kell összerakni. Namost.. A userek kezeléséhez 3 különböző oldalra van szükség minima.
1. userek listázása
2. userek módosítása
3. új userek felvétele
Ennek elvileg 3 url címe van
pl: index.php?page=user&do=list, index.php?page=user&do=mod, index.php?page=user&do=new
Ez eddig szép és jó. Simán eldöntöm az url címekben kapott paraméterek alapján, hogy melyik osztályokat és view fileokat includálom be az adott feladathoz. És itt jön a kérdés.
Ha felveszek egy új usert, akkor az index.php?page=user&do=new oldalon vagyok éppen. A rendszer lekezeli a felvételt és örömmel közli hogy a usert létrehozta. Na de, most is még mindig az új user felvételének url címén vagyok azaz a index.php?page=user&do=new címen. Azt szeretném megoldani redirect nélkül, hogy ebben az esetben ugorjon újra a listázásra és ott jelenítse meg a sikerüzenetet.
Redirect nélkül van erre lehetőség? Ti hogy oldjátok meg az ilyen jellegű oldalak vezérlését?
köszi a válaszokat előre is
■ Egy olyan kérdésem lenne, hogy Ti hogy oldjátok meg bizonyos oldalak vezérlését?!
Adott mondjuk egy admin felület, ahol a userek kezelését kell összerakni. Namost.. A userek kezeléséhez 3 különböző oldalra van szükség minima.
1. userek listázása
2. userek módosítása
3. új userek felvétele
Ennek elvileg 3 url címe van
pl: index.php?page=user&do=list, index.php?page=user&do=mod, index.php?page=user&do=new
Ez eddig szép és jó. Simán eldöntöm az url címekben kapott paraméterek alapján, hogy melyik osztályokat és view fileokat includálom be az adott feladathoz. És itt jön a kérdés.
Ha felveszek egy új usert, akkor az index.php?page=user&do=new oldalon vagyok éppen. A rendszer lekezeli a felvételt és örömmel közli hogy a usert létrehozta. Na de, most is még mindig az új user felvételének url címén vagyok azaz a index.php?page=user&do=new címen. Azt szeretném megoldani redirect nélkül, hogy ebben az esetben ugorjon újra a listázásra és ott jelenítse meg a sikerüzenetet.
Redirect nélkül van erre lehetőség? Ti hogy oldjátok meg az ilyen jellegű oldalak vezérlését?
köszi a válaszokat előre is
Redirecttel
- létrehozás
- módosítás (pont felhasználó esetén általában változni szokott a két form)
- listázás
- törlés
Mi a bajod a redirecttel?
redirect
A törlést azért nem vettem külön, mert azt a listázásnál szoktam megoldani, külön oldalt nem csinálok neki.
A CRUDdal kapcs amit írtál. Ezekkel nincs gondom, azaz a létrehozás, törlés, egyebek. Ennek csak az oldalvezérlése érdekelne, hogy miként lehetne ezt a legszebben megoldani.
Köszi a javaslatot, akkor ez egyelőre 1 pont a redirectnek, ha jól vettem ki szavaidból Te is így oldod meg?! :)
CRUD
Szóval még mindig a redirect marad ami a legjobb megoldás lehet?! Másvalaki?
Teljesen fölösleges 3 vagy több oldal...
A fentiekhez feltétel viszont a JavaScript. Ha ettől ódzkodsz akkor tényleg szükséges a 3 vagy több külön lap. Én szívesen bemutatnám neked az én megoldásomat, de sajnos ezt csak videón tudnám jól érzékeltetni, mert ha ide belőném a teljes kódját, az több mint 600 sorra rúgna. Ehhez a több mint 600 sorhoz legalább 400 sor komment is tartozna hogy érhető legyen mit miért csináltam. :) A lényeg hogy meg lehet csinálni, és sokkal szebb mint minden funkciónak külön lapot nyitni, viszont sokkal bonyolultabb is.
Ajax
Az ajax technikával nemrég kezdtem ismerkedni és valóban sok mindenre hibátlan. Azt mondod, hogy jobb lenne pl. kirakni egy lapkitakaró réteget és azon megvalósítani az adatbevitelt mint egy új lapot betölteni?
Én azt olvastam az Ajax és javascriptről általánosságban, hogy ott használjuk, ahol feltétlen értelme is van és ahol a usereknek erre szükségük lehet. Pl. csekkolni, hogy létezik-e már egy adott usernév, vagy pl kirakni egy új beviteli mezőt vagy akár elpostolni egy űrlapot (megúszva a php időkorlátból fakadó adatvesztést)
Csináltam egy loglistát, abban pl. ha kiválasztasz egy logot, akkor betölti alá ajaxal a log teljes tartalmát úgy hogy betesz egy tr tagot meg abba a tartalmat. Ha már nem kell, akkor meg egyszerűen becsukod és kiszedi a tr-t a táblából.
Nagyon szívesen megnézném még akár videón is, hogy Nálad milyen egy javascriptes vezérlés, de gondolom, hogy hadititok számba megy :)
Nem hadititok... :)
üzenetet hogy adsz át
Én is hasonló problémába (?) ütköztem. Ha a header()-rel visszairányítasz, akkor hogy adod át elegánsan a megerősítő/hiba üzenetet?
Általam használt egyik megoldás, hogy siker/hiba esetén egy session változóban tárolom az üzenetet, ezt hozzárendelem egy view változóhoz, majd törlöm a session változót. Így a view oldalon a template kap egy változót (a view változót), amit megjelenít (mert pl. nem null, vagy mert isset(), stb). De mivel törlődött a session változó, más oldalbetöltődéskor ez nem jelenik meg.
Nem tudom, ez mennyire fapados megoldás (főleg, ha a user nem fogad cookie-t), valakinek van más ötlete?
Köszönöm,
safipeti
Üzenetek
Ezen filóztam én is...
Azt agyaltam ki, hogy ilyen esetben úgy csinálom, hogy pl. még az új usert felvevő oldalon jelenítem meg az üzenetet, majd betolok egy 5-10 mp-es késleltetésű redirectet ami átdobja pl a listaoldalra. Plusz egy linket az üzenet aljára, hogy klikk ide és mész vissza a listához. Csinosítva lehet egy redirect számláló is js-ben az üzi mellett, hogy 4-3-2-1 és visszadob.
Nemtom ez mennyire szép, de hátha. :)
SESSION változó
A session változó
Session
És, hogy a témánál maradjunk. Pont ebből kifolyólag, amire rávilágítottál, talán érdemesebb a redirect előtt megjeleníteni az üzeneteket, hogy ne kelljen session-t használni.
header() előtt
A cookie-k általában nincsenek letiltva (sokan a userek közül nem is tudnak a létezéséről).
Letiltott cookie-kra ált. két lehetőség van:
1. url-ben hozzáadod a session id-t(nem szerencsés, biztonsági szempontból)
2. Amióta az Amazon és egyéb tekintélyes oldalak nem foglalkoznak a letiltott cookie-kkal (ergo, nem tudod használni a szolgáltatást), a user ne tiltsa le a cookie-t 8)
SESSION?
+1 a sessionre