76
MVC Dr Nenad Kojić, dipl. inž. Luka Lukić, dipl. inž. Školska 2018/19. Danijela Nikitin, spec .stuk.inž. Visoka škola strukovnih studija za informacione i komunikacione tehnologije

MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

  • Upload
    trandan

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

MVC

Dr Nenad Kojić, dipl. inž.

Luka Lukić, dipl. inž.

Školska 2018/19. Danijela Nikitin, spec .stuk.inž.

Visoka škola strukovnih studija za informacione

i komunikacione tehnologije

Page 2: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Prvo da se završi instalacija…

Page 3: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Instalacija Laravela

Prvo treba preuzeti composer sa:

https://getcomposer.org/

Page 4: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Instalacija Laravela

Zatim se preuzima cmder sa:

http://cmder.net/

Raspakovati u:

Page 5: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Instalacija Laravela

Pokrenuti Cmder, pozicionirati se u htdocs folder i otkucati sledeće

komande:

composer require global laravel/installer (instalacija Laravela)

laravel new ime_projekta (pravi se folder sa svim neophodnim

fajlovima)

Page 6: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Nakon instalacije…

Page 7: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Stuktura fajlova

Nakon instalacije, folder u kome se nalazi Laravel

Page 8: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Stuktura fajlova

Za početak rada, od suštinskog značaja su sledeći folderi i njihov

sadržaj:

app – smešteni modeli i kontroleri

public – nalazi se sav javni sadržaj (slike, javascript,css)

resources – views, raw un-compiled assets (LESS, SASS, JavaScript)

routes – definisanje i upravljanje rutama

.env – osnovni konfiguracioni parametri

Page 9: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Dobili smo MVC. Šta sa tim?

Page 10: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

MVC arhitektura

MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama

MVC predstavlja akronim od Modle-View-Controller

Proteklih nekoliko godina postala je jako popularna strategija za organizaciju web aplikacija

Ideja je da se aplikacija podeli u tri celine: Model, View, Controller

Page 11: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

MVC arhitektura

Controller

Centralni deo aplikacije, upravlja korisničkim zahtevima i na osnovu zahteva vraća odgovarajući odgovor (request – response, učitava view sa podacima iz modela, vraća json podatke...)

Tumači i upravlja HTTP zahtevima

Poziva Model, menja ili dohvata podatke i, ako je potrebno bira koji view će se učitati kao response

Page 12: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

MVC arhitektura

View

Korisnički interfejs, služi za prikaz podataka dobijenih iz modela

Može da šalje zahtev kontroleru za izmenu prikazanih podataka

Aplikacija se najčešće sastoji iz većeg broja view-a

U web aplikacijama, view je fajl u kome se nalazi HTML

Postoje „templating engine-i“ koji olakšavaju pravljenje view-a (blade, twig)

Page 13: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

MVC arhitektura

Model

Model obezbeđuje podatke i biznis logiku aplikacije

To postiže tako što obezbeđuje komunikaciju sa bazom ili nekim drugim izvorom podataka

Ne zna za HTML, web server, browser niti slično, samo pruža način upravljanja podacima (dohvatanje, izmena, brisanje)

Page 14: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Ranije…

Page 15: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Proceduralni pristup

index.php

kontakt.php

proizvodi.php

Podfolder, sa dodatnim fajlovima

http://localhost/projekat/index.php

http://localhost/projekat/proizvodi.php

http://localhost/projekat/kontakt.php

Page 16: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Proceduralni pristup

index.php

Database

kontakt.php

Database

C:/xampp/htdocs/projekat/index.php C:/xampp/htdocs/projekat/kontakt.php

Page 17: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Sada…

Page 18: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

MVC pristup

.htaccess index.php

Controller Model

View

Routing System

Page 19: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Realizacija MVC-a

U root-u sajta (osnovni public folder) se nalazi .htaccess fajl koji svaki zahtev preusmerava na index.php stranu

index.php odatle dalje prosleđuje zahtev i poziva sistem za rutiranje

Sistem za rutiranje interpretira URL adresu i na osnovu nje učitava određen kontroler i njegov metod

Page 20: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Realizacija MVC-a

Šta je i čemu služi fajl .htaccess?

.htaccess je konfiguracioni fajl koji direktno menja podešavanja Apache servera

Ovim fajlom se mogu promeniti podrazumevana podešavanja za Apache i ona će važiti samo za folder u kome se nalazi ovaj fajl

Služi da dozvoli/zabrani pristup određenim fajlovima i folderima,da se izvrši redirekcija sa jedne stranice na drugu itd...

Ukoliko ne postoji tražena strana, korisnik se preusmerava na 404 stranu

Page 21: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Rutiranje – veza browsera i koda

Page 22: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Rutiranje u Laravelu

Nakon pristizanja HTTP zahteva, on biva preusmeren na Laravel-ov sistem za rutiranje, koji interpretira URL adresu, i na osnovu nje poziva odgovarajući kontroler i njegov metod

Metod u kontroleru zatim obavlja potrebnu logiku, ako ima potrebe poziva model i na kraju učitava view

Tim oblikom komunikacije je obuhvaćen je MVC princip projektovanja

Ruta je sve što se nalazi iza baznog dela URL adrese sajta

http://pera.com/ruta bazni deo { http://pera.com }

ruta { /ruta }

Page 23: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Definisanje rute

Folder za rute se nalazi u root-u projekta, u folderu routes

Fajl u kome se kreiraju rute je web.php

Page 24: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Definisanje rute

Folder za rute se nalazi u root-u projekta, u folderu routes

Fajl u kome se kreiraju rute je web.php

Page 25: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Poziv kontrolera preko rute

Ruta se u Laravelu definiše pomoću klase Route i njenih

statičkih metoda get, post, put, patch, delete i options

Najčešće se koriste get i post, dok se ostali koriste za

realizaciju web servisa

Statički metod je metod koji nije vezan ni za jednu konkretnu

instancu klase, već važi na nivou klase

Statički metod se poziva preko imena klase, ako se poziva van

klase ili rezervisane reči self ukoliko se poziva unutar definicije

klase

Page 26: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Poziv kontrolera preko rute

Primer definicije statičkog metoda

class Primer

{

public static function proba()

{

return “Proba”;

}

}

Primer poziva statičkog metoda

• Unutar metoda neke druge klase: Primer::proba()

• Unutar metoda klase čiji je član taj statički metod: self::proba()

Page 27: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Rad sa rutama - basic

Page 28: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Rad sa rutama - basic

Page 29: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Rad sa rutama - basic

Page 30: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Poziv kontrolera preko rute

Svaki od navedenih metoda predstavlja tip HTTP zahteva koji

se na toj ruti očekuje

Kao prvi parametar metodu rute se prosleđuje ruta u string

formatu, koja se očekuje iz URL adrese, dok drugi ukazuje

na konkretan kontroler i njegov metod

Karakter @ u drugom parametru razdvaja ime kontrolera od

imena metoda tog kontrolera

Page 31: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Poziv kontrolera preko rute

Ako preko browsera posetimo adresu:

http://www.nekisajt.com/strana

Ruta koja će se pozvati biće /strana

Potrebno je definisati koji kontroler i metod se učitavaju prilikom

gađanja ove rute:

Route::get(“/strana”, “kontroler@metod”);

Klasa za rutiranje

Statički metod zadužen

za GET tip request-a

Ime kontrolera koji

se poziva

Metod unutar kontroleraruta

Page 32: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Poziv kontrolera preko rute

Konkretna ruta poziva kontroler i njegov metod, koji ucitava željeni view, koji se prikazuje na kraju prikazuje korisniku

Page 33: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Primer

Route::get('/kontakt',

'KontaktController@prikaz_kontakt');

Route::get('/kontakt/{fname}/{sname}',

'KontaktController@dohvati_kontakt');

Route::get('/kontakt', 'KontaktController@prikaz_kontakt');

Route::get('/kontakt/{fname}/{sname}', 'KontaktController@dohvati_kontakt');

Page 34: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Kreiranje konrolera – unapred…

Page 35: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Kreiranje konrolera – unapred…

Page 36: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Na početnu i na kraju OOP…

Page 37: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Klase u Laravelu

Svaki kontroler u Laravelu je klasa

Klase u Laravelu se automatski učitavaju po „Standardu za automatsko učitavanje“ koje je definisao http://www.php-fig.org/

Trenutni standard za automatsko učitavanje klasa je PSR4

Da bi po navedenom standardu klasa mogla da se automatski učita pomoću loader-a obezbeđenog composer-om, ona mora da ima definisan imenski prostor (imenski prostor govori funkciji za automatsko učitavanje gde se klasa nalazi unutar hijerarhije foldera projekta)

Imenski prostor se definiše rezervisanom rečju namespace i uvek se piše kao prva direktiva u klasi

Page 38: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Prosleđivanje parametara iz rute

Page 39: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim
Page 40: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Rad sa resource (route:list)

Bez metoda

Za pozivanje u

kodu (linkovi npr.)

Page 41: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Upotreba metoda show()

Page 42: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Rad sa resource

Ako se za primer uzme metod show, i u njegovom telu napiše

public function show($id)

{

return "Ovo je metod show sa parametrom: " . $id;

}

Ako se on pozove kao u listingu sa

GET|HEAD | artikli/{artikli} | artikli.show

Page 43: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim
Page 44: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Klase u Laravelu

Definisanje klase u Laravelu koju je moguće automatski učitati

Klasa se nalazi u imenskom prostoru App\Klase\Primeri. U definicijiimenskog prostora (namespace) ne treba navoditi ime klase!

Prilikom kreiranja instance klase, neophodno je navesti potpuno kvalifikovano ime klase.

Potpuno kvalifikovano ime klase se navodi celim imenskim prostorom zajedno sa imenom klase (za razliku od definicije namespace-a) i koristi se pri pravljenju instance klase.

Page 45: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Klase u Laravelu

namespace App\Klase\Proba\Primeri;

class Primer

{

public $polje1;

public $polje2;

public function metod()

{

return $this->polje1;

}

}

Ovakvom definicijom klase kasnije ju je moguće

instancirati i koristiti bilo gde unutar projekta.

Primer poziva klase:

$instanca = new App\Klase\Proba\Primeri\Primer();

Potpuno kvalifikovano

ime klase (sadrži

namespace

[App\Klase\Primeri] i

ime klase [Primer])

Page 46: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Klase u Laravelu

Namespace klase može da postane veoma dugačak i težak za pamćenje

Zbog toga je uvedena rezervisana reč use koja govori da će se u tekućem fajlu koristiti klase iz navedenog namespace-a

Definiše se uvek ispod namespace-a, a iznad definicije klase

Sledi primer klase koja koristi instancu klase koju smo definisali na prethodnom slajdu. Klasa se nalazi u imenskom prostoru App\Klase\Primeri i zove se Proba

namespace App\Klase\Primeri;

use App\Klase\Proba\Primeri\Primer;

class TestKlasa

{

public function test()

{

return new Klasa(); //vraca instance klase definisane na slajdu iznad

}

} //Klasa se nalazi u: app/Klase/Primeri/TestKlasa.php

Page 47: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Kontroleri u Laravelu

Svi kontroleri u Laravelu se nalaze u folderu app/Http/Controllers

Kontroler je klasa! Neophodno je i da ime fajla i ime klase počinju

velikim slovom

Kao i bilo koja druga klasa, kontroler ima svoja polja i metode

Prilikom definisanja rute u routes/web.php navodi se ime kontrolera i ime

metode koja se u tom kontroleru poziva

Neophodno je navesti imenski prostor (namespace)

Page 48: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Kontroleri u Laravelu

Definisanje kontrolera

namespace App\Http\Controllers;

class Kontroler

{

public function metod()

{

return view(‘home’); //Funkcija koja učitava view ‘home.blade.php’ iz

foldera resources/views

}

}

Page 49: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

View Kontroler i model su klase, dok samo View predstavlja PHP

stranicu tj fajl

U ovom fajlu se nalazi sav potreba kod za prikaz podataka

korisniku

Tu se nalazi sav statički i dinamički deo web strane tj. ceo

HTML, CSS, JS kod, ali i PHP kod za dinamičku obradu i

prikaz podataka

Svi view-ovi se nalaze u folderu recources/views

Svaki view ima ekstenziju blade.php

Blade je template engine i dozvoljava naprednu upotrebu

PHP-a za potrebe generisanja dinamičkih web stranica

Fajlovi u views mogu biti raspoređeni u proizvoljne

podfoldere

Page 50: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Inicijalni view

Page 51: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Poziv view-a preko kontrolera

Kontroler funkcijom view(‘home’) učitava istoimeni view iz

foldera resources/views

Ne treba navoditi ekstenziju “.blade.php”

web.php

home.blade.php

Kontroler.php

Page 52: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Kreiranje novog view-a

Novi view se pravi kao klasična PHP stranica sa HTML/CSS

sadržajem

Pretpostavimo da se pravi view kao na slici (prikaz.blade.php)

Page 53: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Korekcije u kontroleru Pretpostavimo da krećemo od napravljenog kontrolera

ProizvodiController, i njegovo metoda show() koji je dohvatai

i prikazivao parametar iz URL adrese

Ovo je bilo do sada:

Tj. pozivanjem se dobijalo:

Page 54: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Pozivanje view-a Ako se sada iz kontrolera pozove view kao

Sada se pozivanjem dobija :

Ovo je statički prikaz! Uvek isti!

Page 55: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Prosleđivanje parametara Podaci se nalaze u kontroleru

U kontroler mogu da stignu ili iz rute ili iz modela

Ako taj podatak treba da se prikaže korisniku, onda se iz

kontrolera mora proslediti view-u

Postoji više načina da se podatak prosledi pozvanom view-u

1. Metod with()

Page 56: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

1. Metod with() Kontroler

View

Poziv

Page 57: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

2. Funkcija compact() Kontroler

View

Poziv

Page 58: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

2. Funkcija compact() – više

parametara Kontroler

View

Poziv

Page 59: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

2. Funkcija compact() – više

parametara - alternativa Kontroler

View

Page 60: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

3. Drugi argument view-a (data) Kontroler

View

Page 61: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

3. Drugi argument view-a (niz) Kontroler

View

Page 62: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

I tako podatak iz kontrolera stiže

do view-a!

Page 63: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Šta sada?

- Greške

Page 64: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Najčešće greške - kontroler

Greška koja nastaje kada nije definisan kontroler

Page 65: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Najčešće greške - metod

Greška koja nastaje kada nije definisan metod u kontroleru

Page 66: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Najčešće greške - ruta

Greška koja nastaje kada nije dobro definisana ruta

Page 67: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Model je poslednji element MVC-a

- Klasa zadužena za rad sa

podacima

Page 68: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Modeli u Laravelu

Do sada smo obradili C i V delove MVC arhitekture

Model je zadužen za obradu i dohvatanje podataka i najčešće je

realizovan kroz rad sa bazom podataka

Dohvatanje i obradu podataka delegira kontroler

Kontroler podatke dobijene od modela dalje prosleđuje view-u kako bi se

oni prikazali

Sve modele smeštamo u folder app/Models. On nije inicijalno napravljen i

neophodno ga je napraviti ručno

Page 69: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Modeli u Laravelu

Da bismo ostvarili vezu sa bazom, neophodno je da podesimo pristupne

parametre

Pristupni parametri se, pored ostalih konfiguracija definišu u fajlu .env u

root-u

Nakon podešenih pristupnih parametra kreiramo folder app/Models

Page 70: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Modeli u Laravelu Kao i kontroler, i model je klasa

Važe ista pravila za imenski prostor kao i u kontroleru

Definisanje modela:

<?php

namespace App\Models;

class ModelPrimer {

public function dohvatiPodatke()

{

return Array("Pera", "Mika", "Laza");

}

}

Napravljeni model ne radi ništa

pametno, sadrži jedan metod koji

vraća niz. Kasnije u primerima će

se raditi sa bazom podataka.

Page 71: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Modeli u Laravelu

Sada smo definisali svaki element MVC-a

Sledeći korak je da kontroler učita model, iz njega dohvati podatke i

prosledi ih view-u za prikaz

Krećemo tako što definišemo rutu

Route::get(‘/test’, ‘kontroler@metod’);

routes/web.php

Page 72: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Modeli u Laravelu Nakon kreiranja rute, pravimo kontroler i metod koje ta ruta poziva

Kontroler u svom metodu kreira instancu model-a i poziva metod

dohvatiPodatke(), koji kao rezultat vraća niz koji se prosleđuje view-u

Kod za kontroler (app\Http\Controllers\Kontroler.php)

<?php

namespace App\Http\Controllers;

use App\Models\ModelPrimer;

class Kontroler

{

public function metod()

{

$modelInstanca = new ModelPrimer();

$podaci = $modelInstanca->dohvatiPodatke();

return view('home', [

’skupPodataka' => $podaci

]);

}

}

Kod za model (app\Models\ModelPrimer.php)

<?php

namespace App\Models;

class ModelPrimer {

public function dohvatiPodatke()

{

return array('Pera', 'Mika', 'Laza');

}

}

Page 73: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Modeli u Laravelu Da bi sve to moglo da radi, neophodno je da postoji navedeni view (ime

view-a je home)

View sadrži HTML kod i nalazi se u folderu resources/views

Ima ekstenziju .blade.php, tako da je konkretan fajl home.blade.php

Kod za view

<html>

<head>

<title>View proba</title>

</head>

<body>

<ul>

<?php

foreach($skupPodataka as $podatak) {

echo "<li>" . $podatak . "</li>";

}

?>

</ul>

</body>

</html>

Krajnji prikaz

resources/views/home.blade.php

Page 74: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Tako je podatak iz Modela došao

do Kontrolera, a on ga dalje

prosledio View na prikaz!

Page 75: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

Da li je ovo realno?

Da ali ne sa fix podacima u

modelu, jer oni treba da se tu

dobiju iz baze podataka.

Zato, idemo dalje!

Page 76: MVC - webdizajn.ict.edu.rs · MVC arhitektura MVC arhitektura je softverski patern koji odvaja prikaz informacija od interakcije korisnika sa tim informacijama MVC predstavlja akronim

MVC

Dr Nenad Kojić, dipl. inž.

Luka Lukić, dipl. inž.

Školska 2018/19. Danijela Nikitin, spec .stuk.inž.

Visoka škola strukovnih studija za informacione

i komunikacione tehnologije