Diskuze: MVC Tutorial
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Teď jsem tě moc nepochopil. Říkáš, že se ti to nedaří nasměrovávat na index?
Spíše jsem to tak nazval, že index je vždy to první co se načte. Spíše když načtu http://domena.cz tak aby zůstala ve stejné podobě a nesměrovala se již rovnou na např. http://domena.cz/rozlozeni
Jde jen o ten vzhled URL
Aha. To je vcelku jednoduchý. Místo kontroleru pro http://domena.cz/ si prostě zavoláš kontroler pro http://domena.cz/rozlozeni. Já to řeším tak, že mám v konfiguračním souboru něco takového:
{
"": "Homepage:default",
"sign/in": "Sign:in",
...
}
Kdy první parametr je URL a druhý je určitá cesta ve tvaru presenter(kontroler):pohled.
Bohužel nerozumím co tím chceš říci
Právě že netuším kam hodit ten default. Celé to funguje, že to musí mít název a podle názvu se to automaticky spojí. V kontroleru to již neudělám tam je pozdě, nebo nevím aspoň jak a musel bych ještě před kontrolerem ale to bych zas nerad udělal něco mimo MVC.
Zkus si to MVC napsat sám, určitě ti to pomůže. V té nejjednodušší úrovni by to mohlo vypadat nějak takto:
JSON:
{
"": "Homepage:default"
}
PHP
$url = ; //Současná URL, z proměnné $_SERVER atp.
$cesty = json_decode("cesta-k-json.json");
foreach( $cesty as $key => $value ) {
$info = explode(":", $value);
if( $key == $url )
$presenter = $key;
}
$presenter = new $key;
A vytvořil sis instanci třídy Homepage. To by byl základ. Na tom už můžeš stavět.
Kód jsem psal narychlo a nezkoušel jsem ho, takže v něm určitě bude chyba. Je to jen na ukázku principu.
Možná na to dneska už koukám velkýma očima. Zítra to vezmu od
začátku a zkusím se i lépe podívat na tvůj příklad. Po přepisování
celého MVC na svůj web mi dalo už docela zabrat. Zkusím se znovu podívat na
logiku a lépe pochopit to routování.
Každopádně jakmile mi odpověď bude stačit, tak určitě body za vyřešeno
dostaneš
Kdybys něco potřeboval, klidně mi písni do soukromých.
Tak jsem se rozhodl, že zatím na MVC ve 100% podobě zatím nemám, jsem
rád když veškerému procesu rozumím a vím proč kam co dát atp. Je pravda
že neprogramuji tak dlouho v kvalitnější podobě, co se týče rozumění
kodu.
Ale krásně mi to vysvětlilo jak je možné provádět nové procesy, které
jsem vyžadoval a věděl že něco podobného v rozsáhlejším projektu bude
potřeba.
Každopádně strukturu jsem si ponechal -> kontroler, model, pohledy...
index.php ->
http://pastebin.com/6Ptz21zi
kontrolery/Kontroler.php
Mám zatím bez využití, ale nahážu tam očištění htmlspecialchars,
vyskakování chyb atp, ale je abstraktní.
kontrolery/SmerovacKontroler.php ->
http://pastebin.com/UaL6y90z
(Menu ze stránky se bude načítat tak jak je, ostatní údaje již z MySQL pomocí PDO samozřejmě a automaticky podle uzivatele a toho co se má zobrazit)
Pak už to jen ve SmerovacKontroler spojím:
case 'prihlasit':
require_once("./pohledy/prihlaseni.phtml");
$FormKontroler->formPrihlaseni();
break;
Což si myslím, že pro začátečníka to není úplně nejhorší. v OOP píšu, nebo v pravém slova smyslu se snažím a PDO taky využívám. Všechno má svůj čas
Z důvodu kompletního předělávání nemám zmíňku o modelech, ale tam bude zpracování formuláře -> např. INSERT do DB, nebo SELECT atp.. Včetně jiných procesů, které nepotřebují již další kontrolu.
Tak jsem dneska asi vstal dobrou nohou... Celé routování jsem si předělal kompletně na GET se zachováním přesné struktury čtení dat.. Pomocí GET si zjistím název a zbytek je úplně stejný. Již načtu kontroler, ten díky URL pozná který kontrolér má načíst a ten spojí vše co je třeba..
Zobrazeno 13 zpráv z 13.