⊗ppMVDFmCn 28 of 35 menu

Kontroleri u svom MVC frejmvorku u PHP

Kao što već znate, svi kontroleri našeg frejmvorka imaju metod render, koji treba pozvati da bismo poslali podatke u prikaz. Ovaj metod naši, korisnički kontroleri nasleđuju od roditeljske klase Controller, koja se nalazi u jezgru. Napravimo ovu klasu:

<?php namespace Core; class Controller { protected function render($view, $data) { } } ?>

Kao što vidite, metod render parametrima prihvata ime prikaza i podatke za prikazivanje. Neka ovaj metod vraća objekat posebne klase Page, u kojoj će se nalaziti informacija o prikazu podataka akcije kontrolera. U ovoj klasi će se nalaziti ime prikaza, podaci, kao i title strane i ime fajla sa izgledom sajta:

<?php namespace Core; class Page { private $layout; private $title; private $view; private $data; public function __construct($layout, $title, $view, $data) { $this->layout = $layout; $this->title = $title; $this->view = $view; $this->data = $data; } public function __get($property) { return $this->$property; } } ?>

Tada će kod našeg metoda render izgledati ovako:

<?php namespace Core; class Controller { protected $layout = 'default'; protected function render($view, $data) { return new Page($this->layout, $this->title, $view, $data); } } ?>

Da pojasnim šta se ovde dešava. Ime prikaza i podaci dolaze kao parametri metoda. Međutim, u korisničkom kontroleru se još postavlja i title strane - putem upisivanja svojstva title. Dakle, u $this->title biće sadržan title, koji ćemo proslediti konstruktoru klase Page.

Postoje i nijanse sa izgledom (layout). Kao što znate, naš frejmvork koristi izgled (layout) iz fajla default.php. Zapravo, svaka akcija može imati i drugi izgled (layout). Za ovo je potrebno u samoj akciji u svojstvo layout upisati drugo ime izgleda (layout).

Kako se to postiže: naš roditeljski kontroler ima svojstvo layout, koje podrazumevano ima vrednost 'default.php'. Ovo će biti izgled (layout) podrazumevano. Međutim, ako akcija korisničkog kontrolera redefiniše vrednost svojstva layout, onda će i izgled (layout) biti drugačiji.

Kopirajte kod moje klase Controller i postavite ga u fajl /core/Controller.php.

Kopirajte kod moje klase Page i postavite ga u fajl /core/Page.php.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij