⊗ppMVDFmCn 28 of 35 menu

Řadiče ve vlastním MVC frameworku v PHP

Jak již víte, všechny řadiče našeho frameworku mají metodu render, kterou je třeba volat pro odeslání dat do pohledu. Tuto metodu naše uživatelské řadiče dědí od nadřazené třídy Controller, umístěné v jádru. Vytvořme tuto třídu:

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

Jak vidíte, metoda render parametrem přijímá název pohledu a data pro zobrazení. Ať tato metoda vrací objekt speciální třídy Page, ve kterém budou obsaženy informace o pohledu dat akce řadiče. V této třídě bude obsažen název pohledu, data, a také titulek stránky a název souboru s rozložením webu:

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

Poté kód naší metody render bude vypadat takto:

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

Vysvětlím, co se zde děje. Název pohledu a data přicházejí parametry metody. Avšak, v uživatelském řadiči je ještě nastaven i titulek stránky - zápisem vlastnosti title. To znamená, že v $this->title bude obsažen titulek, který předáme konstruktoru třídy Page.

Existují také nuance s rozložením. Jak víte, náš framework používá rozložení ze souboru default.php. Ve skutečnosti každá akce může mít i jiné rozložení. K tomu je třeba v samotné akci do vlastnosti layout zapsat jiný název rozložení.

Jak toho je dosaženo: náš nadřazený řadič má vlastnost layout, která standardně má hodnotu 'default.php'. To bude výchozím rozložením. Avšak, pokud akce uživatelského řadiče přepíše hodnotu vlastnosti layout, pak i rozložení bude jiné.

Zkopírujte kód mé třídy Controller a umístěte jej do souboru /core/Controller.php.

Zkopírujte kód mé třídy Page a umístěte jej do souboru /core/Page.php.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout