⊗ppMVDFmCn 28 of 35 menu

Контролери во својот MVC рамка во PHP

Како што веќе знаете, сите контролери на нашата рамка имаат метод render, кој треба да се повика за испраќање на податоци во приказот. Овој метод нашите, кориснички контролери го наследуваат од родителската класа Controller, лоцирана во јадрото. Ајде да ја направиме оваа класа:

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

Како што гледате, методот render како параметар го прифаќа името на приказот и податоците за прикажување. Нека овој метод враќа објект од специјална класа Page, во која ќе содржи информации за приказот на податоците од акцијата на контролерот. Во оваа класа ќе содржи име на приказот, податоци, како и насловот на страницата и името на датотеката со распоредот на сајтот:

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

Тогаш кодот на нашиот метод render ќе изгледа вака:

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

Ќе објаснам што се случува овде. Името на приказот и податоците доаѓаат како параметри на методот. Сепак, во корисничкиот контролер се поставува и насловот на страницата - со запишување на својството title. Значи, во $this->title ќе се содржи насловот, кој ќе го пренесеме на конструкторот на класата Page.

Исто така има нијанси со распоредот. Како што знаете, нашата рамка користи распоред од датотеката default.php. Всушност, секоја акција може да има и друг распоред. За ова треба во самата акција во својството layout да се запише друго име на распоредот.

Како се постигнува ова: нашиот родителски контролер има својство layout, стандардно која има вредност 'default.php'. Ова ќе биде стандардниот распоред. Сепак, ако акцијата на корисничкиот контролер ја преопредели вредноста на својството layout, тогаш и распоредот ќе биде различен.

Копирајте го кодот на мојата класа Controller и поставете ја во датотеката /core/Controller.php.

Копирајте го кодот на мојата класа Page и поставете ја во датотеката /core/Page.php.

Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј