NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 3 - Směrovač (router)

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
Otvorený Zdroj
Tvůrce
Avatar
Otvorený Zdroj:27.1.2019 20:36

$naparsovanaURL = $this->parsujURL($pa­rametry[0]);

$parametry[0]; index 0 by mal byť s hodnotou $parametry[0]= clanok

Odpovědět
27.1.2019 20:36
Ak existuje voľná energia, tak autorské právo sú dve smiešne slová..
Avatar
Otvorený Zdroj
Tvůrce
Avatar
Otvorený Zdroj:27.1.2019 20:49
$naparsovanaURL = $this->parsujURL($parametry[0]);

$parametry[0]; pole s indexom 0 by mal byť s hodnotou $parametry[0]= clanek;

Prečo vypisuje pri print_r ($this->parsujURL($pa­rametry[0])); cele pole a nie iba hodnotu poľa??

ako vypíšem hodnotu napr.poľa indexu 1?? keď toto mi vykazuje chybu
echo ($this->parsujURL($pa­rametry[1]));

Odpovědět
27.1.2019 20:49
Ak existuje voľná energia, tak autorské právo sú dve smiešne slová..
Avatar
Odpovídá na Otvorený Zdroj
Michal Šmahel:28.1.2019 17:03

Ahoj, nech si vypsat proměnnou $parametry funkcí var_dump(). Je to testovací funkce, která ti detailně zobrazí strukturu pole v ní uloženého.

Pokud tě výsledek nějak překvapí, projdi si celou cestu změn této proměnné. Když bys narazil na něco, čemu nerozumíš, ještě napiš.

Odpovědět
28.1.2019 17:03
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Otvorený Zdroj
Tvůrce
Avatar
Odpovídá na Michal Šmahel
Otvorený Zdroj:30.1.2019 1:18
       <?php

      $url = "http://www.mydomain.com/clanek/nazev-clanku/dalsi-parametr";

$naparsovanaURL = parse_url($url);
$naparsovanaURL["path"] = ltrim($naparsovanaURL["path"], "/");
$naparsovanaURL["path"] = trim($naparsovanaURL["path"]);
$rozdelenaCesta = explode("/", $naparsovanaURL["path"]);

echo('<br />');
print_r ($rozdelenaCesta); // vypíše pole: Array ( [0] => clanek [1] => nazev-clanku [2] => dalsi-parametr )


$tridaKontroleru = (array_shift($rozdelenaCesta)) . 'Kontroler';

echo('<br />');
echo($tridaKontroleru); //vypíše: clanekKontroler

echo('<br />');
echo('<br />');
print_r ($rozdelenaCesta);//vypíše:Array ( [0] => nazev-clanku [1] => dalsi-parametr )

echo('<br />');
echo ($rozdelenaCesta[1]); //vypíše: dalsi-parametr

?>

všetko čo chcem z lekce 3 aby mi vypísalo hodnotu poľa: dalsi-parametr,vieš mi to napísať?

Odpovědět
30.1.2019 1:18
Ak existuje voľná energia, tak autorské právo sú dve smiešne slová..
Avatar
Otvorený Zdroj
Tvůrce
Avatar
Odpovídá na Otvorený Zdroj
Otvorený Zdroj:30.1.2019 3:21
// pôvodná časť súboru:index.php
$smerovac = new SmerovacKontroler();
$smerovac->zpracuj(array($_SERVER['REQUEST_URI'])); // hodnota v poli s indexom 0

//upravená časť súboru:index.php
$smerovac = new SmerovacKontroler();
$smerovac->zpracuj($_SERVER['REQUEST_URI']); // hodnota v reťazci


// pôvodná časť súboru:SmerovacKontroler.php

public function zpracuj($parametry)
    {

                $naparsovanaURL = $this->parsujURL($parametry[0]);


             echo('<br />');
                print_r($parametry);    //vypíše: Array ( [0] => /clanek/nazev-clanku/dalsi-parametr )

// kontroler je 1. parametr URLArray ( [0] => /clanek/nazev-clanku/dalsi-parametr

$tridaKontroleru = $this->pomlckyDoVelbloudiNotace(array_shift($naparsovanaURL)) . 'Kontroler';
                 echo('<br />');
                echo($tridaKontroleru); //vypíše: ClanekKontroler

                echo('<br />');
                print_r($naparsovanaURL);//vypíše: Array ( [0] => nazev-clanku [1] => dalsi-parametr )
    }

// upravená časť súboru:SmerovacKontroler.php

 public function zpracuj($parametry)
    {
                $naparsovanaURL = $this->parsujURL($parametry); //odkazuje na reťazec nie na pole.

                echo('<br />');
                print_r($parametry); //vypisuje: /clanek/nazev-clanku/dalsi-parametr

                $tridaKontroleru = $this->pomlckyDoVelbloudiNotace(array_shift($naparsovanaURL)) . 'Kontroler';
                 echo('<br />');
                echo($tridaKontroleru); // vypisuje: ClanekKontroler

                echo('<br />');
                print_r($naparsovanaURL); // vypisuje: Array ( [0] => nazev-clanku [1] => dalsi-parametr )

}

Až teraz som si všimol že, pôvodné súbory predávaju url do poľa Array ( [0] => /clanek/nazev-clanku/dalsi-parametr

ďalší index už neexistuje. Prečo autor neodkazoval url do reťazca ako mam uvedené upravenom kóde ale dával to do poľa:-). Prečo to treba dať do poľa?

Odpovědět
30.1.2019 3:21
Ak existuje voľná energia, tak autorské právo sú dve smiešne slová..
Avatar
Odpovídá na Otvorený Zdroj
Michal Šmahel:30.1.2019 17:21

Aha, takhle. Být tebou bych to nechal podle Davida. Svou úpravou porušuješ dědičnost.

Články zatím nejsou převedeny pod verzi PHP 7+, tedy nevyužívají striktní typování. Metoda zpracuj() je zděděna ze třídy Kontroler, kde je deklarována. Aktualizovaná deklarace by vypadala nějak takto:

// Kontroler

public abstract function zpracuj(array $parametry): void;

// ...

Jak je vidět, parametry se ve všech implementacích této abstraktní metody budou předávat jako pole. Je to zejména kvůli tomu, že později (i v tomto seriálu) bude potřeba předávat několik parametrů dalším kontrolerům (těm, které budou volané pro další zpracování a nastavení dat pro obsah). Tebou zmiňovaná implementace tedy nesmí být výjimkou.

Odpovědět
30.1.2019 17:21
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Petr
Člen
Avatar
Petr:4.6.2019 7:38

Na localhost se mi vypíše:
Kontroler
Array ( )
Má být:ClanekKontroler
Array ( [0] => nazev-clanku [1] => dalsi-parametr )

nebo:
http://localhost/…lsi-parametr se vypíše:
The requested URL /clanek/nazev-clanku/dalsi-parametr was not found on this server.

Je to ze vzorového ITnetworkMVC02
Netuším, kde je chyba. /clanek/ neexistuje. Jinak apache2 a localhost funguje korektně. (phpinfo())

 
Odpovědět
4.6.2019 7:38
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Petr
Jan Lupčík:9.6.2019 16:14

Ahoj, máš vytvořený soubor .htaccess s obsahem z minulé lekce?

Odpovědět
9.6.2019 16:14
TruckersMP vývojář
Avatar
Petr
Člen
Avatar
Petr:11.6.2019 10:42

Nefunguje mi "RewriteEngine", ani na primitivní akci. Samozřejmě na vzorové také ne.

_htaccess
Options -Indexes
RewriteEngine On
RewriteRule index\.html indexy.html

Mám Linux Mint 19 Cinnamon, apache2 php 7.2. Používám Localhost.

Virtual host mi v home funguje normálně, včetně databáze. Modul rewrite.so je v /usr/lib/apache2/. Asi mod Rewrite na Localhostu nesmí fungovat. Nevím.

 
Odpovědět
11.6.2019 10:42
Avatar
Petr
Člen
Avatar
Petr:12.6.2019 19:33

sudo a2enmod rewrite, to byl ten správný příkaz roota, aby apache povolilo mod RewriteEngine. Potom v htaccess příkaz "RewriteEngine On" dostal smysl.
Dále v sites-enable ve virtual.conf bylo třeba změnit příkazy na:
Options Indexes FollowSymLinks MultiViews
AllowOverride All ... nikoliv none

Restart apache2 a bylo vše funkční.
Takže problém byl jenom v konfiguraci apache, který jsem netušil, jak ho vyřešit.
Google pomohl.

 
Odpovědět
12.6.2019 19:33
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 109.