IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: MVC Tutorial

Aktivity
Avatar
katrincsak
Člen
Avatar
katrincsak:22.6.2015 18:03

Zdravím,

řekl jsem si že se zkusím podívat na MVC architekturu. Vzhledem k tomu, že již před pár týdny jsem začal pořádně s PHP a rovnou už v OOP, tak jsem se chytil celkem rychle. Ale....

Ať se snažím jak se snažím, tak se mi nedaří nasměrovat URL tak, aby za hlavní domenou při načtení indexu nebyl hned název "pohledu" respektive přesměrování např. na http://domena.cz/složka ale aby prvotní načtení zůstalo http://domena.cz .

Každopádně mám pocit, že podle aktuálního tutoriálu to defakto nejde. Samozřejmě vím jak bych to obešel, ale rád bych nenarušoval integritu MVC.

Základ je v podstatě zde a níže: http://www.itnetwork.cz/…tni-formular

děkuji.

Editováno 22.6.2015 18:04
 
Odpovědět
22.6.2015 18:03
Avatar
Odpovídá na katrincsak
Neaktivní uživatel:22.6.2015 18:09

Teď jsem tě moc nepochopil. Říkáš, že se ti to nedaří nasměrovávat na index?

Nahoru Odpovědět
22.6.2015 18:09
Neaktivní uživatelský účet
Avatar
katrincsak
Člen
Avatar
Odpovídá na Neaktivní uživatel
katrincsak:22.6.2015 18:11

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

 
Nahoru Odpovědět
22.6.2015 18:11
Avatar
katrincsak
Člen
Avatar
katrincsak:22.6.2015 18:12

Jde jen o ten vzhled URL :-)

 
Nahoru Odpovědět
22.6.2015 18:12
Avatar
Odpovídá na katrincsak
Neaktivní uživatel:22.6.2015 18:18

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(kon­troler):pohled. :)

Editováno 22.6.2015 18:21
Nahoru Odpovědět
22.6.2015 18:18
Neaktivní uživatelský účet
Avatar
katrincsak
Člen
Avatar
Odpovídá na Neaktivní uživatel
katrincsak:22.6.2015 18:25

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.

 
Nahoru Odpovědět
22.6.2015 18:25
Avatar
NouF
Člen
Avatar
NouF:22.6.2015 18:32

off topic

Editováno 22.6.2015 18:33
 
Nahoru Odpovědět
22.6.2015 18:32
Avatar
Odpovídá na katrincsak
Neaktivní uživatel:22.6.2015 18:32

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.

Editováno 22.6.2015 18:33
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
22.6.2015 18:32
Neaktivní uživatelský účet
Avatar
katrincsak
Člen
Avatar
Odpovídá na Neaktivní uživatel
katrincsak:22.6.2015 18:42

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š ;-)

 
Nahoru Odpovědět
22.6.2015 18:42
Avatar
Odpovídá na katrincsak
Neaktivní uživatel:22.6.2015 18:46

Kdybys něco potřeboval, klidně mi písni do soukromých. :)

Nahoru Odpovědět
22.6.2015 18:46
Neaktivní uživatelský účet
Avatar
katrincsak
Člen
Avatar
Odpovídá na Neaktivní uživatel
katrincsak:24.6.2015 9:54

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/Kon­troler.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/Sme­rovacKontroler­.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)

  • Tahle cesta mi nepřijde úplně nejhorší, adresa URL taky vypadá dost pěkně /?p=NAZEV

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 ;-)

Editováno 24.6.2015 9:56
 
Nahoru Odpovědět
24.6.2015 9:54
Avatar
katrincsak
Člen
Avatar
katrincsak:24.6.2015 10:06

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.

 
Nahoru Odpovědět
24.6.2015 10:06
Avatar
katrincsak
Člen
Avatar
katrincsak:24.6.2015 12:36

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..

Editováno 24.6.2015 12:36
 
Nahoru Odpovědět
24.6.2015 12:36
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.