NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze – Lekce 4 - Propojení kontroleru a pohledu

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá 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

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

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

 
Odpovědět
5.6.2015 19:46
Avatar
Odpovídá 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

Odpovědět
5.6.2015 20:14
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?

 
Odpovědět
3.8.2015 19:48
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

 
Odpovědět
12.9.2015 14:10
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';
 
Odpovědět
17.10.2015 12:39
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.

 
Odpovědět
17.10.2015 14:25
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 ;)

Editováno 21.10.2015 11:47
 
Odpovědět
21.10.2015 11:45
Avatar
MArtin
Člen
Avatar
Odpovídá 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
Editováno 21.10.2015 12:44
 
Odpovědět
21.10.2015 12:44
Avatar
MArtin
Člen
Avatar
Odpovídá 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>
 
Odpovědět
22.10.2015 15:34
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 150.