⊗ppMVDFmCn 28 of 35 menu

Kontrolery vo vlastnom MVC frameworku v PHP

Ako už viete, všetky kontrolery nášho frameworku majú metódu render, ktorú je potrebné volať pre odoslanie dát do pohľadu. Túto metódu naše, používateľské kontrolery dedia od rodičovskej triedy Controller, ktorá sa nachádza v jadre. Poďme vytvoriť túto triedu:

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

Ako vidíte, metóda render parametrom prijíma názov pohľadu a dáta pre zobrazenie. Nech táto metóda vráti objekt špeciálnej triedy Page, v ktorej bude obsahovať informácia o pohľade dát akcie kontrolera. V tejto triede bude obsahovať názov pohľadu, dáta, ako aj title stránky a názov súboru s layoutom stránky:

<?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; } } ?>

Potom kód našej metódy render bude vyzerať takto:

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

Vysvetlím, čo sa tu deje. Názov pohľadu a dáta prichádzajú parametrami metódy. Avšak, v používateľskom kontroleri je nastavený aj title stránky - zápisom vlastnosti title. To znamená, že v $this->title bude obsahovať title, ktorý odovzdáme konštruktoru triedy Page.

Existujú aj nuansy s layoutom. Ako viete, náš framework používa layout zo súboru default.php. V skutočnosti, každá akcia môže mať aj iný layout. Pre to je potrebné v samotnej akcii vo vlastnosti layout zapísať iný názov layoutu.

Ako sa to dosiahne: náš rodičovský kontroler má vlastnosť layout, ktorá má predvolene hodnotu 'default.php'. To bude layoutom predvolene. Avšak, ak akcia používateľského kontrolera prepíše hodnotu vlastnosti layout, tak aj layout bude iný.

Skopírujte kód mojej triedy Controller a umiestnite ho do súboru /core/Controller.php.

Skopírujte kód mojej triedy Page a umiestnite ho do súboru /core/Page.php.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť