Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 4. diel - Prepojenie kontroleru a pohľadu

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Odpovedá na Martin Mandík
Marek Šafránek:5.6.2015 19:36

Mám to na chlup stejně jako v tutoriálu - s vyjímkou, že sem to nastavil na redakcnioop.lo­calhost.com

Odpovedať
Stojí-li něco za námahu, je třeba to udělat pořádně...
Avatar
Odpovedá na Marek Šafránek
Martin Mandík:5.6.2015 19:46

Tak to mě nic jinýho nenapadá...

Avatar
Odpovedá na Martin Mandík
Marek Šafránek:5.6.2015 20:14

Děkuju za snahu, ale přehlédl jsem chybu v názvu var... $tribaKontroleru

Odpovedať
Stojí-li něco za námahu, je třeba to udělat pořádně...
Avatar
Grimor
Člen
Avatar
Grimor:3.8.2015 19:48

Ahoj,

mám takový malinký problém. Z nějakého důvodu mi tag <base> nebere číslo portu. Mám webserver kvůli jinému serveru v síti nastaven na port 8080 místo 80 a nejede mi ani s localhost ani s localhost:8080. Na druhou stranu když dočasně přepnu na port 80, tak mi to v pořádku jede na localhost.

Je jasné, že kvůli tomuhle problému mi nefungují pěkné URL, ale všiml jsem si tohoto problému až při přidávání druhého parametru, v tom případě první parametr Apache pochopí jako složku.

Teoreticky mi to teď funguje, ale potřebuju, aby to jelo na portu 8080, existuje nějaká možnost, jak mu dát vědět o portu?

Avatar
Martin Suchodol:12.9.2015 14:10

Mám menší problém na localu tedy na rpi které mi jede v chodbě mi to ukazuje klasickou 404 chybu a ne nikoliv udaj chyba z routeru ani mě to nepresmeruje na chybu. viz screen https://ctrlv.cz/ptkT. Procházel jsem si to znovu a znovu a chybu nikde nevidím

Avatar
Vít Cigánek:17.10.2015 12:39

Zdravím

tenhle kód mi nějak unika. Mohl by mi to někdo vysvětlit?

$this->kontroler->zpracuj($naparsovanaURL);

Zbývá nastavení pohledu směrovače, tedy šablony s rozložením webu.

Vytvoříme si několik proměnných pro šablonu. Již víme, že jsme v šabloně použili $titulek, $klicova_slova a $popis. Také víme, že proměnné šabloně předáme jako klíče v poli $this->data[]. Jako hodnoty do šablony vložíme vždy titulek, popis a klíčová slova, která má vložený kontroler. Kód bude vypadat takto:

$this->data['titulek'] = $this->kontroler->hlavicka['titulek'];
$this->data['popis'] = $this->kontroler->hlavicka['popis'];
$this->data['klicova_slova'] = $this->kontroler->hlavicka['klicova_slova'];

Nakonec zbývá nastavit pohled, to uděláme jednoduše dosazením názvu souboru s pohledem do atributu $pohled:
// Nastavení hlavní šablony

$this->pohled = 'rozlozeni';
Avatar
Vít Cigánek:17.10.2015 14:25

Jinak by mohl někdo z Vás napsat článek o debugovaní v NetBeans nebo v jiných IDE. Programátor se bez toho neobejde. Echo v php nelze vypsat vždy a já pořád nechápu tenhle kus kódu.

$this->kontroler->zpracuj($naparsovanaURL);

Když metoda zpracuj, volá metodu zpracuj, tak by se to mělo přece zacyklit.

Avatar
MArtin
Člen
Avatar
MArtin:21.10.2015 11:45

Taaakze ideme na 4. diel do podadresara...

index.php upravime takto:

pred mb_internal_en­coding("UTF-8");
si dame:

$cfgvars = array();
if ($_SERVER['SERVER_NAME'] == 'localhost')
        $cfgvars['rootDir'] = '/'. array_pop((explode("\\", dirname(__FILE__)))) .'/';
else
        $cfgvars['rootDir'] = '';
global $cfgvars;

do $cfgvars si mozme dat postupne aj ine nastavenia - kedze pouzivame globals, je dobre tam davat premenne z ohladom na tuto skutocnost.

Kontroler.php

premennu $hlavicka upravime takto:

protected $hlavicka = array('titulek' => '', 'klicova_slova' => '', 'popis' => '', 'rootDir' => '');

na zaciatok metody presmeruj($url) dame:

global $cfgvars;

presmerovanie bude:

header("Location: $cfgvars[rootDir]$url");

SmerovacKontro­ler.php

v parsujULR($url) by malo ostat red returnom

if ($_SERVER['SERVER_NAME'] == 'localhost')
                array_shift($rozdelenaCesta);

z predchadzajucej casti serialu (a mojej upravy)

na zaciatok metody zpracuj($parametry) dame znova global $cfgvars

do "Nastavení proměnných pro šablonu" pridame nakoniec

$this->data['rootDir'] = $cfgvars['rootDir'];

a nakoniec do rozlozeni.phtml vlozime premmene spravnej cesty

<base href="/localhost<?= $rootDir ?>" />

a

<link rel="stylesheet" href="<?= $rootDir ?>style.css" type="text/css"/>

ked som nieco nezabudol, tak by to malo fungovat na localhoste v ramci prvej urovne adresara, kto ma na lokale virtual server, tak tam treba dat prazdny retazec pre $rootDir, na remote by to malo fungovat dobre automaticky.

Netvrdim, ze toto je najlepsie riesenie, ale zatial funguje - teda aspon mne ;)
Good luck ;)

Editované
Avatar
MArtin
Člen
Avatar
Odpovedá na MArtin
MArtin:21.10.2015 12:44

este som zabudol, ze v .htaccess
treba odkomentovat RewriteBase a za lomitko napisat nazov vasho adresara v ktorom projekt mate.

napr.:

RewriteBase /mvctest
Editované
Avatar
MArtin
Člen
Avatar
Odpovedá na MArtin
MArtin:22.10.2015 15:34

rozlozeni .phtml ma byt upravene spravne takto:

<base href="<?= $rootDir ?>" />

a

<li><a href="<?= $rootDir ?>clanek/uvod">Úvod</a></li>
<li><a href="<?= $rootDir ?>clanek">Články</a></li>
<li><a href="<?= $rootDir ?>kontakt">Kontakt</a></li>
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 150.