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 – 3. diel - Smerovač (router)

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
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

Odpovedať
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]));

Odpovedať
Ak existuje voľná energia, tak autorské právo sú dve smiešne slová..
Avatar
Odpovedá 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š.

Odpovedať
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Otvorený Zdroj
Tvůrce
Avatar
Odpovedá 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ť?

Odpovedať
Ak existuje voľná energia, tak autorské právo sú dve smiešne slová..
Avatar
Otvorený Zdroj
Tvůrce
Avatar
Odpovedá 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?

Odpovedať
Ak existuje voľná energia, tak autorské právo sú dve smiešne slová..
Avatar
Odpovedá 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.

Odpovedať
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())

Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovedá na Petr
Jan Lupčík:9.6.2019 16:14

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

Odpovedať
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.

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.

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 109.