Články

Z Nette frameworku mizí vykřičníky

Aktualizováno: 29. 11. 2020, datum vydání: 12. 8. 2016

Z Nette frameworku mizí vykřičníky v šablonách a jsou nahrazeny Latte makrem |noescape. Považuji to za dobrý krok, protože pod vykřičníkem si obvykle programátor představí zápor (negaci).

Nette framework 2.4

Aktualizováno: 29. 11. 2020, datum vydání: 24. 7. 2016

Framework Nette je možno používat pro vývoj aplikací v PHP. Zde je pár odkazů na základní informace:

Nette – Google analytics

Aktualizováno: 5. 10. 2020, datum vydání: 7. 2. 2016

Při přidání kódu vygenerovaného pomocí Google analytics do stránek postavených na frameworku Nette server ohlásí chybu a stránky nezobrazuje. Příčina je v zápisu kódu. Nette bere závorku { jako Latte makro a snaží se ji vyhodnotit. Laděnka následně oznámí chybu či se přeruší běh skriptu na serveru.

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
...

Pro funkčnost kódu je zapotřebí udělat mezeru za závorkou {.

Nette – stránkování s Visual Paginatorem

Aktualizováno: 21. 9. 2020, datum vydání: 22. 8. 2014

Komponenta Visual Paginator

Pro stránkování v projektu postaveném na frameworku Nette lze využít již hotovou komponentu Visual Paginator od Davida Grudla.

Začlenění komponenty

Pro začlenění komponenty lze využít návod pro psaní komponent a příklad Fifteen, ve kterém je komponenta FifteenControl umístěna v adresáři

Fifteen / app / components /

a v příslušném prezenteru je pak metoda na vytvoření komponenty. Po nakopírování Visual Paginatoru do obdobné složky ve verzi Nette 2.2.1 komponenta zprovoznit jde.

Nette – vypnutí a zapnutí laděnky

Aktualizováno: 21. 9. 2020, datum vydání: 27. 7. 2014

Ve frameworku Nette je k dispozici tzv. laděnka. Když dojde k nějaké chybě v našem programu, vyvolá se výjimka. Místo standardní chybové hlášky PHP se aktivuje laděnka naprogramovaná ve frameworku Nette a chybu nám vypíše. Dokonce ukáže, kde přesně chyba vznikla. Vypíše i veškeré proměnné, které jsou inicializovány.

Laděnka je skvělá věc pro ladění lokální verze aplikace v PHP. Na ostré verzi umístěné na internetu se standardně laděnka nespouští a vypíše se stránka s interní chybou Error 500. To je v pořádku. Na internetu si nemůžeme dovolit z bezpečnostního hlediska výpis všech proměnných na obrazovku uživatele. Ale i na ostré produkční verzi lze laděnku ručně zapnout php kódem:

$configurator->setDebugMode(TRUE);

či vypnout

$configurator->setDebugMode(FALSE);

Na ostré produkční verzi by však laděnka neměla být nikdy zaplá.

Nette – konfigurace ostré a lokální databáze

Aktualizováno: 21. 9. 2020, datum vydání: 25. 7. 2014

Pro odlišení připojení k databázi pro lokální a ostrou verzi webu můžeme použít následující nastavení souborů určených pro konfiguraci. Dobrý vzorový příklad celé aplikace najdeme nahraný na serveru github.com (aplikace ZUMScore).

Konfiguraci můžeme rozhodit např. do tří souborů: config.neon, config.local.neon a config.product.neon.

Nette – výpis proměnných

Aktualizováno: 11. 9. 2020, datum vydání: 10. 7. 2014

Proměnnou lze v nette vypsat na obrazovku například přes templatu. V presenteru naplníme proměnnou a následně ji vypíšeme v šabloně. Tento přístup je však pro ladění programu dosti nepohodlný. Pokud je v programu chyba, která způsobí volání laděnky, lze obsah proměnných někdy vidět přímo v laděnce.

Zpočátku si asi každý povzdechne, že nemůže jednoduše vypsat proměnnou přes echo či funkce print_r či var_dump tak, jak byl zvyklý.

Nette a datum DATE v databázi MySQL

Aktualizováno: 20. 6. 2020, datum vydání: 22. 2. 2014

Nette datum ve tvaru: -0001-11-30 00:00:00

Narazila jsem na problém plnění hodnot z databáze do formuláře. V databázi jsem použila typ DATE, který je ve formátu 0000-00-00. Tato nulová hodnota jde do databáze bezproblémů uložit, pokud není databáze nastavena na NO ZERO DATE tak, že to zakazuje. Asi bychom měli správně do databáze nulové údaje nedávat, zabránit jejich vložení a vyžadovat použití hodnoty NULL. K uložení této hodnoty 0000-00-00 také dojde, pokud se snažíme přímo v databázi uložit nesmyslné datum.

Při načtení této hodnoty 0000-00-00 z databáze MySQL pomocí Nette se ve formuláři či výpisu hodnot tabulky zobrazí údaj:

-0001-11-30 00:00:00

Nette – příklad na databázi MySQL

Aktualizováno: 20. 6. 2020, datum vydání: 20. 2. 2014

Příklad QuickStart

Jednoduchý komplexní příklad s komunikací s databází ve frameworku Nette je součástí QuickStartu, jehož zdrojový kód je umstěn na GitHubu včetně příkazů pro databázi database.sql. Bohužel není součástí staženého zipu samotné Nette. Teprve po dokopírování starší verze Nette (např. NetteFramework-2.0.8, adresář sandbox/libs) do adresáře libs a zprovoznění databáze je projekt funkční.

Konfigurace serveru pro Nette

Aktualizováno: 20. 6. 2020, datum vydání: 17. 2. 2014

Začínáme s frameworkem Nette

Většinu důležitých věcí se dozvíme pro začátek v dokumentaci QuickStart.

Framework si stáhneme a nahrajeme soubory do patřičného adresáře. Vzorová aplikace je umístěna v adresáři sandbox, takže pokud nás zajímá rovnou náš nový projekt, tak stačí obsah tohoto adresáře nahrát na web a začít ho upravovat. Obsahem adresáře sandbox je i Nette. Spouštěcí soubor index.php je umístěn v adresáři www. Pokud mají být stránky přístupné přímo pod doménovým jménem, je zapotřebí nastavit adresář www jako root webu.

Nette – vlastní šablony

Aktualizováno: 20. 6. 2020, datum vydání: 7. 7. 2013

Šablony ve frameworku Nette obvykle nastavovat vůbec nemusíte, protože sám presenter je automaticky napojený na příslušnou svou šablonu. Stará se o to MVC model aplikace.

Může se však vyskytnout situace, kdy kromě této šablony chcete použít nějakou jinou vlastní a nechat si pomocí ní vyrendrovat nějaký HTML výstup, a to buď přímo na obrazovku, či do proměnné, kterou dále použijete. Vlastní šablona se může například hodit, pokud chcete metodou flashMessage() pomocí Html::el po zpracování formuláře zobrazit nějaký komplikovanější HTML výstup.

Standardní vyrendrování šablony na výstup

sablona.latte

<p>Ahoj, tady je
{$firstName}
{$lastName}.</p>

Nette – HTML elementy

Aktualizováno: 20. 6. 2020, datum vydání: 1. 7. 2013

Kromě formátování HTML pomocí šablon můžete použít ve frameworku Nette tzv. k HTML elementy. HTML elementy dokáží vygenerovat validní HTML kód. Jejich uplatnění můžete nalézt například v presenteru při výpisu zpráv po zpracování formuláře, nebo například při úpravě políček vstupního formuláře a jeho pokročilejšího vykreslování.

Psaná dokumentace počítá s tím, že rovnou vytváříte konkrétní tag. Funkce lze však použít i na prázdný tag. Použití elementů není až tak jednoduché. Metodou add můžete přidávat další html elementy do stávajícího elementu (jde o vnoření do stávajícího tagu). Metodou insert můžete vložit nějaký HTML element úplně na začátek. Článek nemá nahradit psanou dokumentaci, pouze uvádím pár příkladů pro doplnění na jejich použití...

Html::el()

Klasické použití

use Nette\Utils\Html;

$el = Html::el('h2', 'Zadání');
echo $el;	// vypise <h2>Zadání</h2>

Kořenový adresář (root) www v Nette

Aktualizováno: 22. 9. 2020, datum vydání: 31. 1. 2013

httpd.conf

Příklady ve frameworku nette počítají s tím, že hlavním adresářem pro umístění www stránek bude adresář www. Kořenový adresář lze nastavit v konfiguračním souboru httpd.conf pomocí direktivy DocumentRoot serveru Apache.

Řešení v nette

Ne vždy máte možnost si tento soubor upravit. Možnosti řešení tohoto problému jsou popsány v FAQ nette v článku Hosting neumožňuje změnu root složky. Jsou dvě možnosti, jak situaci řešit: přesměrování pomocí mod_rewrite, nebo změna adresářové struktury s úpravou nastavených cest. Funkční řešení je také popsáno v komentáři HappyFace.

EasyPHP + PSPad + Nette

Aktualizováno: 5. 10. 2020, datum vydání: 29. 1. 2013

Trojkombinace

Webový server EasyPHP

Pro vývoj v PHP používám na svém PC ve Windows předkonfigurovaný server EasyPHP (obsahuje: PHP, Apache, MySQL, PhpMyAdmin, Xdebug). Pro ostrý provoz bude použit Linux server nakonfigurovaný poskytovatelem hostingu.

Editor kódu PSPad

Programový kód píši v jednoduchém editoru PSPad, který je zdarma a umí připojení přes FTP. PSPad je jednoduchý editor. Pro pokročilejší práci lze použít další editory kódu.

Framework Nette

Rozhodla jsem se napsat webovou aplikaci v PHP za použití frameworku Nette. Použití frameworku pro programování není nutné, můžete psát i v samotném PHP bez použití frameworku, nebo můžete použít jiný framework.

Pascal – „správná čísla“

Aktualizováno: 24. 4. 2020, datum vydání: 1. 11. 2012

Zadání příkladu

Program vyzve uživatele k zadání celého čísla. Úkolem programu je zjistit, zda dané číslo je dělitelné jednotlivými ciframi (číslicemi) daného čísla. Např. když uživatel zadá „672“ program vypíše, že jde o „správné číslo“, protože 672 : 6 = 112; 672 : 7 = 96; 672 : 2 = 336. Naopak číslo 726 „není správné číslo“, protože 726 : 7 = 103,7143.

Dále program vyzve uživatele, aby zadal interval od A do B a v rámci tohoto intervalu program vypíše veškerá „správná čísla“.

Další články