⊗ppMVDFmCn 28 of 35 menu

Kontroleriai savame MVC karkase PHP

Kaip jau žinote, visi mūsų karkaso kontroleriai turi metodą render, kurį reikia iškviesti norint siųsti duomenis į vaizdą. Šį metodą mūsų, vartotojo sukurti kontroleriai, paveldi iš tėvinės klasės Controller, esančios branduolyje. Sukurkime šią klasę:

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

Kaip matote, metodas render parametrais priima vaizdo pavadinimą ir duomenis atvaizdavimui. Tegul šis metodas grąžina specialios klasės Page objektą, kuriame bus saugoma informacija apie kontrolerio veiksmo duomenų vaizdą. Šioje klasėje bus saugomas vaizdo pavadinimas, duomenys, taip pat puslapio antraštė ir svetainės maketo failo pavadinimas:

<?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 mūsų metodo render kodas atrodys taip:

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

Paaiškinsiu, kas čia vyksta. Vaizdo pavadinimas ir duomenys ateina metodo parametrais. Tačiau, vartotojo kontroleryje taip pat nustatoma ir puslapio antraštė - įrašant savybę title. Vadinasi, $this->title ir bus talpinama antraštė, kurią perduosime klasės Page konstruktoriui.

Yra ir niuansų su maketu. Kaip žinote, mūsų karkasas naudoja maketą iš failo default.php. Tiesą sakant, kiekvienas veiksmas gali turėti ir kitą maketą. Tam reikia pačiame veiksme į savybę layout įrašyti kitą maketo pavadinimą.

Kaip tai pasiekiama: mūsų tėvinis kontroleris turi savybę layout, pagal nutylėjimą turinčią reikšmę 'default.php'. Tai ir bus maketas pagal nutylėjimą. Tačiau, jei vartotojo kontrolerio veiksmas perrašys savybės layout reikšmę, tai ir maketas bus kitoks.

Nukopijuokite mano klasės Controller kodą ir patalpinkite jį faile /core/Controller.php.

Nukopijuokite mano klasės Page kodą ir patalpinkite jį faile /core/Page.php.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti