Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // Router je speciální typ controlleru, který podle URL adresy zavolá
- // správný controller a jím vytvořený pohled vloží do šablony stránky
- class SmerovacKontroler extends Kontroler
- {
- // Instance controlleru
- protected $kontroler;
- // Metoda převede pomlčkovou variantu controlleru na název třídy
- private function pomlckyDoVelbloudiNotace($text)
- {
- $veta = str_replace('-', ' ', $text);
- $veta = ucwords($veta);
- $veta = str_replace(' ', '', $veta);
- return $veta;
- }
- // Naparsuje URL adresu podle lomítek a vrátí pole parametrů
- private function parsujURL($url)
- {
- // Naparsuje jednotlivé části URL adresy do asociativního pole
- $naparsovanaURL = parse_url($url);
- // Odstranění počátečního lomítka
- $naparsovanaURL["path"] = ltrim($naparsovanaURL["path"], "/");
- // Odstranění bílých znaků kolem adresy
- $naparsovanaURL["path"] = trim($naparsovanaURL["path"]);
- // Rozbití řetězce podle lomítek
- $rozdelenaCesta = explode("/", $naparsovanaURL["path"]);
- return $rozdelenaCesta;
- }
- // Naparsování URL adresy a vytvoření příslušného controlleru
- public function zpracuj($parametry)
- {
- $naparsovanaURL = $this->parsujURL($parametry[0]);
- // Pokiaľ URL neobsahuje žiaden parameter
- if (empty($naparsovanaURL[0]))
- $this->presmeruj($jazyk . '/home');
- // Ak URL obsahuje parameter, tak 1. parametrom bude Kontroler
- $aktivnyKontroler = $this->pomlckyDoVelbloudiNotace(array_shift($naparsovanaURL));
- $tridaKontroleru = $aktivnyKontroler . 'Kontroler';
- if (file_exists('mvc/kontrolery/' . $tridaKontroleru . '.php'))
- $this->kontroler = new $tridaKontroleru;
- else
- $this->presmeruj($jazyk . '/notfound');
- // Volání controlleru
- $this->kontroler->zpracuj($naparsovanaURL);
- // Nastavení proměnných pro šablonu
- $this->data['titulek'] = $this->kontroler->hlavicka['titulek'];
- $this->data['popis'] = $this->kontroler->hlavicka['popis'];
- $this->data['klicova_slova'] = $this->kontroler->hlavicka['klicova_slova'];
- $this->data['aktivny_link'] = $aktivnyKontroler;
- $this->data['jazyk'] = $jazyk;
- // Nastavenie hlavnej šablóny
- $this->pohled = 'rozlozeni';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement