Slidee
Úvodem
Stávalo se mi, že jsem potřeboval zpíchnout malej jednoduchej web. A hlavně rychle a levně. Něco co nevyžadovalo složitou logiku. Vlastně šlo jen o texty, maximálně obrázky. Více hraní bylo se stylováním vzhledu. Tedy něco kde si vystačím s prostým html + css. Na co tam rozjíždět nějaký těžkotonážní framework.
A tak jsem tedy použil prosté html. šlo to podle očekávání.
Jen mi u třetí stránky začlo rozčilovat, že tam všude opakuju stejný kód, protože všude chci ten samej sidebar. A stejnou hlavičku a patičku. A verzi css musím taky incrementovat všude. Asi si dovedete představit.
Pak mi zákazník řekl, že by tam chtěl těchto třista fotek.
A také kontaktní formulář.
Dobřé, tak nic.
Ukradl jsem tedy jeden nápad Davida Grudla, trochu si s ním pohrál, a toto je výsledek.
Co to umí
Základem je stejné uvažování jako když děláte obyčejný statický web pomocí čistých html souborů. Stejné je to v tom, že co soubor to stránka. Liší se to tím, že soubory jsou ve formátu latte, že můžete použít layout a includovat fragmenty. Také se to liší v tom, že je možné používat určitá dynamická kouzla, která v čistém html pochopitelně nejdou. O tom ale později.
Instalace
Do projektu si stáhnu pomocí composeru knihovnu tacoberu/nette-slidee. Z přiloženého skel zkopíruju index.php
tam, kde bude veřejná část webu,
a nasměruju všechny zajímavé cesty kam patří. Adresář se stránkami pojmenuju například pages
.
Poladím @layout.latte
, přidám stránky jaké potřebuji.
A měl by fungovat.
Takže něco jako takto
composer require tacoberu/nette-slidee
mkdir app
cp -r vendor/tacoberu/nette-slidee/skel/* app
mkdir document_root
mv app/index.php document_root/
mkdir -m 0777 -p var/log
mkdir -m 0777 temp
php -S localhost:8001 -t document_root
Použití
Používá se to prakticky stejně jako by to byla aplikace v Nette. Předpokládá se jakože jeden jediný presenter s názvem Page,
který má akce co se jmenujou stejně
jako stránky. Takže stránka about
je Page:about
. Stránka contact-me
je Page:contactMe
.
Odkazy se dělají bez toho prezenteru protože nemusím.
Mohu používat bloky, je k dispozici proměnná {$basePath}, mohu používat vypisování dat (když je tam dostanete - o tom dále). Můžete registrovat funkce a makra
v config.neon
.
Celé kouzlo je v makru {url nazev-stranky}, které dělá to, že se soubor nemusí jmenovat tak, jak se bude jmenovat url.
Komponenty?
Je připravená metoda createComponent()
která předpokládá nadefinovanou a pojmenovanou továrnu. Tedy, když v configu uvedete:
services:
contactForm: App\Controls\ContactFormFactory
Tak v stránce můžete použít tento formulář:
{control contactForm}
Přirozeně tento formulář bude chtít nějak někam ukládat data. Takže vytvoříte službu a necháte mu ji injektnout pomocí DIC. Tak jak je to v Nette obvyklé.
Závěr
Potřebujete jednoduché stránky? Třeba vám zrovna Slidee poslouží. Nebude to vhodné řešení pro velkou aplikaci, kde chcete komplexní administraci a mít pod kontrolou veškeré nuance requestu. Třeba ACL není vůbec řešena. Stejně tak gridy či administrace. Ale na jednoduché stránky s několika málo formuláři to může být vhodné řešení. Zvažte to a dejte vědět.