Tudnátok ajánlani nekem php (oop) MVC tutorialt? Vagy jó ahogy próbálom?
Értem az egészet, a modelt meg is tudom csinálni.
A view-ig még nem jutottam el, de az szerintem menni fog.
De a controllert nem tudom megcsinálni..
Van az index.php, ide jön minden, ez indít el mindent.
Létre kell hoznia egy baseController példányt, és annak átadnia az url paramétereket.
És ez ennyi?
A baseControllerben pedig eldöntöm, hogy melyik controllert includeoljam, és hívjam meg, és adjam tovább a dolgokat.
A legmélyebbi controllerben pedig kiszedem az adatokat a modellből, és átadom a viewnak.
Tudom mire jó az extended, de hogyan, mire használom a controllereknél?
Vaagy amikor megvan a baseController objektumom, a paraméterekkel, akkor úgy nem kell azt továbbadni, ha pl xController extends baseController ?
Az extends :)
És egyébként igen, a baseControllert kell extendelni a többi controllerrel. PL ha van egy regiszrációs oldal rajta, akkor class Registration extends baseController... :P mert saját tulajdonságai(pl funckciók) vannak ami a sima controllernek nincsen.
És ehhez csinálsz egy Registration_Model-t is, amit szintén betölt a Controllered. És egy View-t is persze.
igen az már megvan :D
Valamit most megint nem értek:
Csinálok egy baseController példányt, public változója $url, létrehozáskor meg is kapja ($this->url=$url)
Ha az első paraméter mondjuk Users akkor include usersController, és $uController= new usersController();
Csakhogy ott már nem férek hozzá a létrehozáskor megváltozott $url változóhoz. (ha pl parentben így definiálom: public $url = 'Nemjó'; akkor a usersControllerben az $url Nemjó :D)
A gyermek osztályoknak mindig át kell adni?
Mert amit eddig találtam róla, mind úgy írja hogy mondjuk a Kutyát hozza létre, és azzal az Állatokat, de ha nekem már van Állatom, akkor gondolom a kutyában nem kéne mégegyszer létrehozni.
Úgy csináld hogy megkapod pl az url-ből, hogy registration, ez lesz az $url (tegyük fel, hogy nem tömb egyelőre).
$controller = new $url[]; //vagy $url[0] ha explode-olt tömböd van az url-ből.
a registration class extends baseController constructjában pedig parent::construct-is kell.
A baseController hozza létre a view-t, és kell neki egy loadModel function is, amit a $controller létrehozása után futtatsz le.
$controller->loadModel($url[0]);
a loadModel($url) pedig include-olja a registration_model.php-t.
require 'models/'.$url.'_Model.php';
$model = $url.'_Model';
this->model = new $model();
szerintem rossz az elgondolásom.
az indexnél már rögtön azt a controllert kell meghívnom amelyik a legmélyebben van asd.hu/user/jani -> nem a usercontroller ami mondjuk eldönti hogy az összes usert(asd.hu/user) mutassa, hanem létrehozzon másik controllert ami azt az egy user mutatja(asd.hu/user/jani)
Már agyfasz kapok ettől az mvc-től D:
semmi normálisat nem találok googleben, se normális leírást csak olyat amit vagy már nem értek, vagy ami nagyon alap, vagy ami nem olyan ami ehhez kapcsolódik.
Még példa siteot sem találok, ami ilyen lenne.
Miért ilyen nehéz az élet? :D Miért kellett ezt pont ma elkezdenem, olyan szépen indult a nap :(
Maradva az állatos példánál:
Így néz ki az url: a.hu/allatok/kutyuska
Akkor kell egy kutyuska controller ami az állatokat egészíti ki.
Az indexnél a kutyuska controllert kell meghívnom?
Ha pedig az url a.hu/allatok, akkor itt az allatok controllert hívom meg
Ne úgy csináld.
Az állatok legyen a controller, a kutyuska pedig egy function.
Így hívd meg miután létrehoztad a $controllert:
$controller->{$url[1]}();
Ehhez ugye kell az explode-olt url :)
A kutyuska functionban pedig haszálhatsz model-t ha kell, aztán renderelsz egy view-t neki.
Köszi!
Néztem közbe JREAM -től videót, ott is így csinálja, most sok dolog tisztázódott bennem :)
Már csak egy gond van (egyelőre :D) mi van, ha több paraméterből áll az url? Pl állatok/emlősök/szárazföldi/medvedisznóember
Tovább nézem a videókat :)
(amúgy éppen átírni készülök egy majdnem kész oldalt, már alig igazodok el benne.
Gondoltam majd ha kész lesz végre, majd ráérek akkor átírni, két hét és csinálom. Hát sokszor telt le az a két hét, és már 2k+ sor van csak a controlleremben (nagyon alap mvc))
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!