Geek tričko zdarma Python týden
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde
Pouze tento sleva až 80% na kurzy Python

Lekce 2 - Nette sandbox a IDE

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci, Úvod do Nette frameworku pro PHP, jsme si udělali úvod do Nette frameworku. V dnešním Nette tutoriálu si připravíme potřebné nástroje.

Potřebný software

Jako první, co je potřeba udělat, je připravit si správný software, který budeme potřebovat. Budu předpokládat, že máte nainstalovaný a zprovozněný webový server Apache + PHP + MySQL. Pokud ne, tak pro začátečníky doporučuji XAMPP.

Pro aktuální Nette, tedy verzi 2.4.x, budete potřebovat PHP 5.6 a vyšší! My budeme používat nejnovější PHP 7, které je v době psaní tohoto článku PHP 7.3.

Dále pro ty, co jsou zvyklí psát v editoru jako třeba PSPad, bych doporučil nějaké IDE, které vám práci usnadní. Doporučuji NetBeans (aktuální verze v době psaní tohoto článku je 10), který má v sobě zabudovaný plugin přímo pro Nette a nemusíte ho tedy instalovat ručně, jako tomu bylo v předchozích verzích.

Pokud toto všechno máte, tak budeme samozřejmě potřebovat Nette framework. Ten stáhneme na oficiálním webu v sekci download a to v aktuální verzi a rozbalíme do nějaké složky na disku.

NetBeans

Pokud jste se rozhodli pracovat v NetBeans, tak je potřeba (no není to nutné, ale pro další práci je to lepší) udělat pár nastavení.

V hlavním okně NetBeans kliknete na Tools -> Options a v nově zobrazeném okně kliknete na PHP, vyberete záložku Frameworks & Tools, následně v bočním seznamu Nette2 a zadáte dvě cesty. První z nich je k "loaderu" Nette a druhá je k sandboxu.

Nastavení NetBeans pro Nette

Vytvoření projektu z sandboxu

Teď už máme snad všechno nastaveno a zbývá jen vytvoření projektu. To provedeme jako v každém jiném IDE - File -> New project.

V nově otevřeném okně se zobrazí průvodce. Vybereme kategorii PHP a jako projekt zvolíme PHP Application.

Vytvoření PHP Nette projektu

V dalším kroku vyplníme název projektu (např. známé hello-world, ale na názvu nám teď nezáleží) a místo, kam se má uložit. Nejspíš někam, kam má přístup Apache server jako např. složka htdocs/.

Název Nette projektu a umístění

Ve třetím kroku není potřeba nic měnit a v posledním, tedy čtvrtém kroku, vyberete požadovaný framework - v našem případě Nette2 PHP Web Framework a klikneme na Finish.

Dokončení průvodce

Tímto jsem vytvořili první projekt postavený na Nette v rámci NetBeans IDE! :)

Pokud chceme používat novější vlastnosti jazyka (například ty z PHP 7), jak jsme psali výše, je potřeba tyto změny provést v composer.json souboru. V sekci dependencies uvidíte "php": ">=5.6.0". Tento řádek přepište na "php": ">=7.0.0". Dále na konci souboru naleznete následující konfiguraci.

"config": {
    "platform": {
        "php": "5.6"
    }
}

Tato konfigurace explicitně nastavuje verzi PHP na 5.6. Tuto část můžete smazat.

Tato část je užitečná, pokud chcete využívat novější vlastnosti PHP 7. Některé IDE, jako třeba PhpStorm, si podle konfiguraci v composer.json nastaví aktuální verzi PHP. Při použití novějších vlastností jazyka poté budou hlásit chybu. Explicitním nastavením verze PHP na verzi 7 (případně vyšší jako >= 7.3.0), budete moci využívat novějších konstrukcí jazyka a IDE tomu bude rozumět. Tyto změny je nutné provést i v případě, že jste vytvářeli projekt pomocí composeru.

Směrování

Jelikož vlastní soubor index.php se nachází ve složce www/, tak výsledná adresa bude vypadat jako http://localhost/hello-world/www/. Elegantní cesta, jak to vylepšit v rámci Apache serveru, je vytvořit v kořenovém adresáři projektu soubor .htaccess. Pomocí něj se poté můžeme snadno přesměrovat do složky www/ a URL adresa bude vypadat jako http://localhost/hello-world/.

Soubor přidáme kliknutím pravým tlačítkem na Source Files v okně NetBeans a vybereme z kontextové nabídky New -> Other... V otevřeném okně zvolíme kategorii Other a v pravém sloupci vybereme Empty file. Klikneme na Next a jako název souboru napíšeme .htaccess a klikneme na Finish.

Do vytvořeného souboru napíšeme nebo vložíme následující kód:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^$ www/ [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^www/
    RewriteRule ^(.*)$ www/$1
</IfModule>

Alternativním řešení je přinutit Apache, aby automaticky první navštívil složku www. To můžeme udělat dvěma způsoby. Prvním z nich je nastavit DocumentRoot proměnnou v konfiguračním souboru httpd.conf. Pokud tuto proměnnou nastavíte na www složku Nette, máte zajištěno, že se uživatel nedostane mimo (po nastavení je potřeba restartovat Apache server). Alternativním způsobem je nastavit tzv. virtuální hosty. Jejich nastavení je nicméně mimo obsah tohoto článku.

Tím se dostáváme k dnešnímu výsledku, kdy by se vám měla zobrazit podobná stránka jako vidíte níže. Potom jste vše udělali správně a jsme tedy na správné cestě k naučení se Nette a k příští lekci.

Zprovozněný sandbox v Nette frameworku

Requirements checker

Někdy se může hodit ověřit, zda nastavení Apache a PHP splňuje podmínky pro správný běh Nette frameworku. Ve složce sandbox/www/checker/ se nachází tzv. Requirement Checker (pro starší verze Nette ho hledejte v jiné složce). Spouští se zadáním adresy - http://localhost/hello-world/checker/ a umožňuje ověřit správnost všech závislostí:

Nette Checker

Všechny řádky by měly svítit zeleně. Pokud je nějaký žlutý, tak to nevadí a framework pojede, jen nebudete moci využívat danou funkcionalitu.

Příště, v lekci První aplikace v Nette, si vytvoříme svou první aplikaci v Nette. Prozradím, že se jedná o jednoduchou kalkulačku.


 

Stáhnout

Staženo 672x (1.66 MB)
Aplikace je včetně zdrojových kódů v jazyce PHP

 

 

Článek pro vás napsal michalkasparec
Avatar
Jak se ti líbí článek?
28 hlasů
Autor se věnuje backendovým systémům postavených na .NET Core a databázím MS-SQL a pracuje ve společnosti Avast Software..
Předchozí článek
Úvod do Nette frameworku pro PHP
Všechny články v sekci
Základy Nette frameworku
Miniatura
Následující článek
První aplikace v Nette
Aktivity (18)

 

 

Komentáře

Avatar
Ori
Člen
Avatar
Ori:9.3.2014 18:11

Vyborne, snad budes pridavat tutorialy castejsie, pretoze prechadzam z CodeIgniteru na nette a vobec sa mi to nepaci a nerozumiem tomu

 
Odpovědět 9.3.2014 18:11
Avatar
michalkasparec
Redaktor
Avatar
michalkasparec:9.3.2014 18:47

Plánuji během následujícího týdne napsat alespoň další 2 díly

 
Odpovědět  +1 9.3.2014 18:47
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na michalkasparec
David Čápka:9.3.2014 18:51

To tedy vypadá, že se budu učit Nette :P

Odpovědět  +4 9.3.2014 18:51
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Filipko Ipiko Madunický:26.4.2014 11:47

strasne moc dakujem za ten htaccess subor na konci lebo ten co maju na stranke nette mi nesiel a kvoli nemu som zabil 7 hodin jak volaky blbecek so zapinanim mod_rewrite na apachi v linuxe zbytocne :D :D skoro ma pritom slak trafil takze za moje zdravie DAKUJEM :)

 
Odpovědět  +2 26.4.2014 11:47
Avatar
filipfr
Člen
Avatar
filipfr:15.8.2015 13:02

Ahoj, poradíte mi někdo, jak zprovoznit na linuxu+netbeans? Sandbox jsem si vygeneroval přes composer. Nicméně nevím, co zadat jako cestu k Nette framework sources. Díky

 
Odpovědět 15.8.2015 13:02
Avatar
Vít Cigánek:11.11.2015 18:15

Až na to, že když se dá projekt na Disk D tak nefunguje. Musím to mít v "C:/xampp/htdocs" virutal host nezabral.

<VirtualHost *:80>
DocumentRoot "D:/www/DatabazeKnih"
ServerName DatabazeKnih
</VirtualHost>
 
Odpovědět  -2 11.11.2015 18:15
Avatar
michalkasparec
Redaktor
Avatar
Odpovídá na Vít Cigánek
michalkasparec:19.11.2015 9:31

Dej si to na disk ktery chces, ale pokud chces pracovat s virtual hostama, tak je dobre si to nejdriv nastudovat, jak se nastavuji cesty atd.
https://httpd.apache.org/…xamples.html

 
Odpovědět  +1 19.11.2015 9:31
Avatar
siders
Člen
Avatar
siders:15.8.2016 12:30

ověření splňujících podmínek pro správný běh Nette frameworku (verze Nette 2.4):

  • rozbalit stažený archiv, vyhledat v něm "checker"
  • zkopírovat obsah adresáře checker (cesta např. ...\latest\san­dbox\www) do rootu (xammp/htdocs)
  • v prohlížeči stačí zadat localhost

nastavení NetBeans 8.1:

 
Odpovědět  +2 15.8.2016 12:30
Avatar
Nezmar Hydra
Člen
Avatar
Nezmar Hydra:22.11.2016 21:27

Jen se podělím o zkušenost.

Abych mohl používat .htaccess musel jsem v root/etc/apache2/a­pache2.conf
nastavit
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

abych mohl používat stažené soubory musím jim změnit práva v root/var

sudo chmod a+rwx www -R

Mám Ubuntu 14.04 release
Web server Apache/2.4.7 (Ubuntu)
PHP version 5.5.9-1ubuntu4.20

Děkuji za bezvadně popsanej popis instalace.

 
Odpovědět 22.11.2016 21:27
Avatar
Kara
Člen
Avatar
Kara:17.3.2017 14:53

ahoj, co mam delat, kdyz v tools nemam slozku Requirements-Checker???? slozka nette - tools - a tam je jenom open-in-editor...dik

 
Odpovědět 17.3.2017 14:53
Avatar
Lasvit
Člen
Avatar
Lasvit:19.3.2017 16:07

Ahoj,
koukám, že od nové verze už tam není takže krok s Requirements-Checke klidně můžeš přeskočit. (já to tak udělal a funguje)
a v novějším NetBeans je cesta Tools->Options->PHP->Frameworks & Tools -> Nette2

 
Odpovědět  +1 19.3.2017 16:07
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na Kara
Jindřich Máca:21.3.2017 22:24

Ahoj,

Requirements Checker tam stále normálně je, akorát byl přesunut přímo do složky sandbox/, konkrétně sandbox/www/chec­ker/. Spouští se potom přes index.php až v již vytvořeném projektu tj. v našem případě přes URL

http://localhost/DatabazeKnih/checker/

Jeho výstup a funkčnost by měli být plus mínus stejné. ;)

 
Odpovědět  +2 21.3.2017 22:24
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Jindřich Máca
David Čápka:21.3.2017 22:32

Přidal jsem to do článku a přesunul to na konec.

Odpovědět  +1 21.3.2017 22:32
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
SolusLupusUmbra
Redaktor
Avatar
SolusLupusUmbra:9.7.2017 13:45

ahoj, vše jsem provedl podle pokynů, ale ve složce source file/app nemám templates, ale forms. je to totéž? díky

 
Odpovědět 9.7.2017 13:45
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na SolusLupusUmbra
Jindřich Máca:10.7.2017 21:42

Ahoj, složka forms/ rozhodně není totéž. Složka templates/ se totiž v novější verzi Nette přesunula do složky presenters/ tj. aktuální cesta je:

app/presenters/templates/
 
Odpovědět  +1 10.7.2017 21:42
Avatar
SolusLupusUmbra
Redaktor
Avatar
Odpovídá na Jindřich Máca
SolusLupusUmbra:10.7.2017 22:12

díky.
jak fungují třídy ve složky forms, tj. jak můžu použít ty factory na formuláře?

 
Odpovědět 10.7.2017 22:12
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na SolusLupusUmbra
Jindřich Máca:10.7.2017 23:06

Fungují jako továrničky pro formuláře na přihlašování a registraci uživatelů a použít je dozajista můžeš. :)

 
Odpovědět 10.7.2017 23:06
Avatar
David Koníček:16.1.2018 7:16

Ahoj kluci, můžete mi prosím poradit s touto chybou? Objeví se po vytvoření daného .htaccessu a spuštění projektu. Nevím si s tím rady :(

Odpovědět 16.1.2018 7:16
Věř, běž a dokážeš!
Avatar
Odpovídá na David Koníček
David Koníček:16.1.2018 7:51

Už v pořádku...nějak jsem přesouval projekt a nastala tam chyba..Můžete případně tyto komentáře smazat, díky :)

Odpovědět 16.1.2018 7:51
Věř, běž a dokážeš!
Avatar
Jan Bartík
Člen
Avatar
Jan Bartík:15.3.2018 13:35

Zdarec prosím o radu všechno jsem udělal dle návodu a vyskočila tahle obrazovka nevím co to po mě chce ... :/

 
Odpovědět 15.3.2018 13:35
Avatar
Odpovídá na Jan Bartík
Dominik Gavrecký:15.3.2018 13:45

Použi nette checker ... Každopádne na zložku log zmeň práva na 777

Odpovědět  +1 15.3.2018 13:45
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Jan Bartík
Člen
Avatar
Odpovídá na Dominik Gavrecký
Jan Bartík:15.3.2018 13:57

jaha změnil jsem práva a už to šlape :) ....Děkuju :)

 
Odpovědět 15.3.2018 13:57
Avatar
Jan Bartík
Člen
Avatar
Odpovídá na Dominik Gavrecký
Jan Bartík:15.3.2018 13:59

Ještě k tomu checkeru tady je foto a píše mě to že nemam mod_rewrite ale přitom to neni pravda co by to mohlo znamenat ? :/

Editováno 15.3.2018 13:59
 
Odpovědět 15.3.2018 13:59
Avatar
Jan Bartík
Člen
Avatar
Jan Bartík:15.3.2018 14:00

...

 
Odpovědět 15.3.2018 14:00
Avatar
Odpovídá na Jan Bartík
Ondřej Langr (andysekcze):15.3.2018 14:12

koukni do nastavení PHP, pokud to máš nastavené pravdivou hodnotu (Yes || 1 || true || něco takového), tak je to divné. Popř. zkus normální(cokoliv) projekt a buď a nebo :D

Odpovědět 15.3.2018 14:12
I have a charger. I have Note 7. Umh I haven't Note7.
Avatar
Václav Pecha:11.7.2018 17:26

nechápu proč bych si zase měl instalovat další editor... to by nešlo ten příklad udělat v něčem jinym...
vůbec takhle nevim kde se vytvoří jaké soubory a adresáře :-/
holt taková je doba, že kdejakej jouda si vytvoří framework :/

 
Odpovědět 11.7.2018 17:26
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Václav Pecha
David Čápka:11.7.2018 17:58

Můžeš použít jaké IDE chceš a projekt založit tak, že si stáhneš Nette sandbox a ten v tom IDE otevřeš a upravíš. Toto je začátečnický tutoriál a nejvíce začátečníků má NetBeans, proto se tu používá a nevyplatilo by se nám to tu dělat v čemkoli jiném. Stejně, jako se nám nevyplatí dělat naopak pokročilé tutoriály v NetBeans a jsou v PhpStorm.

PS: Samozřejmě můžeš ten článek přepsat pro jiné IDE, kdokoli to může udělat, možnost přidat článek tu je.

Editováno 11.7.2018 17:59
Odpovědět  +1 11.7.2018 17:58
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Simon marecek:19.7.2018 17:54

Neviem prečo, ale keď vytváram projekt, tak mi vždy zamrzne celý Netbeans a na poslednom kroku keď kliknem na finish. Prejde to iba na 75%. Prišiel som na to, že mi to vo www vytvorilo znova cely sandbox s názvom projektu a v jeho www to vytvorí znova celý sandbox s názvom projektu, a takto to vytvorilo znova a znova, dokopy to vytvorilo cez 37000 súborov. Som si myslel, že mi to mrzne ale ono to iba vytváralo všetky tie súbory. Tie som vymazal a teraz mi to ide, ale neviem prečo ich vytvorilo. Robí to tak vždy keď sa snažím vytvoriť projekt..

 
Odpovědět 19.7.2018 17:54
Avatar
Vít Cigánek:25.8.2018 13:57

Mi nefunguje na linuxu tento htaccess <IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ www/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^www/
RewriteRule ^(.*)$ www/$1
</IfModule>
a ve windowsech mi funguje tak nevim jestli nemam zadat nějaké opravnění na linux aby mi to bralo htaccess a nebo jestli mam změnit nastaveni htaccessu

 
Odpovědět 25.8.2018 13:57
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na Vít Cigánek
Jindřich Máca:25.8.2018 14:25

Ahoj, pravděpodobně máš v konfiguraci Apache serveru vypnutou podporu pro .htaccess, zkus to tedy zkontrolovat v nastavení a případně zapnout. ;-)

 
Odpovědět 25.8.2018 14:25
Avatar
Odpovídá na Jindřich Máca
Vít Cigánek:25.8.2018 15:22

Ahoj, bylo to tak akorat mi trvalo nez jsem to nasel. https://askubuntu.com/…virtual-host

 
Odpovědět 25.8.2018 15:22
Avatar
Jaroslav Patrný:16.10.2018 14:10

Ahoj, kde v PHP (v XAMPPu) mám hledat nápravu?

 
Odpovědět 16.10.2018 14:10
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na Jaroslav Patrný
Jindřich Máca:17.10.2018 0:46

Ahoj, základem je povolit příslušná PHP rozšíření (extensions) v konfiguraci PHP v rámci XAMPP. To se dělá úpravou v konfiguračním souboru \xampp\php\php.ini a následným restartem serveru.

Dále může být potřeba některá rozšíření ještě nakonfigurovat, případně kompletně doinstalovat, pokud snad v základní instalaci XAMPP chybí. :-`

 
Odpovědět  +1 17.10.2018 0:46
Avatar
Jaroslav Patrný:20.11.2018 17:40

Ahoj, už jsem sice o kousek dále a je to O.K., ale pokud by měl někdo podobný problém, uvádím zde své řešení.
V php.ini jsem extension_dir = "ext" přepsal na extension_dir = "C:\xampp\php\ex­t".

 
Odpovědět 20.11.2018 17:40
Avatar
Jirka Veselý:4.12.2018 18:32

Ahoj, pořád mi nechce naběhnout nette, vždy se mi po spuštění index.php zobrazí kód php. Nejspíš potřebuji nastavit apache, ale nevím jak...

 
Odpovědět 4.12.2018 18:32
Avatar
Lorem-iPsUM-D .oLoR.SIT. penis:23. března 10:50

n

Odpovědět 23. března 10:50
<!DOCTYPE html> <html lang="cs"> <head> <base href="https://www.itnetwork.cz/" /> <meta chars...
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 36 zpráv z 36.