Tpl

Seznam a popis elementů základní šablony (pclib\Tpl).

Definice elementu v sekci <?elements ... ?> šablony vypadá takto: typ nazev atributy

Každý element může obsahovat jeden nebo více atributů, s nebo bez parametru: atribut "parametr"

V těle šablony ho vypíšeme jako {nazev}, přičemž některé typy elementů mohou mít modifikátory: {nazev.modifikator}

Pro kterékoliv pole šablony lze použít následující atributy:

Atributy
noescape Pole nebude escapovat html
noprint Pole nebude zobrazené (lze zapnout pomocí $tpl->enable('pole'))
onprint "callback" Pro výpis bude použita uživatelsky definovaná funkce callback (standardní element handler se nevolá)
default "string" Implicitní hodnota, která se použije, pokud je pole prázdné
Modifikátory
{pole.value} Prostá hodnota pole bez jakýchkoliv úprav definovaných v elements
👁 string description noescape default "Popis není k dispozici"

Elementy a atributy

string Běžný text
Atributy
size "n" [tooltip] Ořízne text na n znaků ("tooltip" zobrazí celý text v tooltipu po najetí myší)
date | date "format" Formátovaný datum z databáze Default format: "d.m.Y"
format "nHuls" Formátovaný řetězec: n:nl2br, H:strip_tags, u:uppercase, l:lowercase, s:addslashes
👁 string title size "20" tooltip
👁 string created_at date "d.m.Y H:i"
number Formátované číslo, např. 1.200,50
Atributy
format "dpt" d: počet desetinných míst, p: znak pro desetinnou čárku, t: oddělovač tisíců
👁 number price format "2,."
block Blok ohraničující část šablony. Lze ho skrýt, nastavit hromadně hodnoty nebo atributy polí v něm.
Modifikátory
{block name}...{/block} Ohraničuje oblast
👁 block address noprint
link HTML odkaz.
Atributy
url | route "string" Url nebo route odkazu
lb "string" Text odkazu
popup | popup "parametry" Otevře odkaz v popup okně. Volitelné parametry jsou velikost a pozice popup okna, např. "800x600", "800x600+500+300"
confirm "dotaz" Zobrazí javascript confirm dialog s dotazem
html_🔹 "value" Nastaví html atribut 🔹 na hodnotu "value" - např. html_class "link-primary" → <a class="link-primary">
Modifikátory
{pole.url} Vypíše url odkazu
{pole.js} Vypíše javascript kód na přesměrování na odkaz
👁 link lnedit lb "Editovat" route "products/edit/id:{id}"
include Vloží podšablonu a sloučí její elementy s aktuální šablonou.
Atributy
file "path" Cesta k vkládané šabloně
👁 include agreement file "tpl/partial/agreement.tpl"
action Vloží výstup action metody controlleru.
Atributy
route "route" Routa akce jejíž výstup se vloží do šablony. Může obsahovat parametry.
👁 action title_image route "catalog/image/id:{id}"
bind Vypíše lookup (číselníkové) pole: hodnotu id přeloží na label podle specifikace.
Atributy
list | query | lookup "string" Zdroj vazby id:label může být textový seznam, sql dotaz nebo číselník
field "name" Hodnota id se bude získávat z pole "name".
bitfield Hodnota je uložená jako bitfield (např. pole checkboxů ve formuláři) a může odpovídat více možnostem.
notranslate Číselník nebude zahrnutý mezi texty k překladu.
K formátování výstupu lze použít i atributy jako u string elementu - např. "size".
👁 bind status lookup "order_status"
👁 bind published list "1,ano,2,ne"
👁 bind vendor query "select id,name from vendors" size "30" tooltip

Grid

Seznam a popis elementů datagridu (pclib\Grid)

Pro kterékoliv pole (sloupec) datagridu lze použít následující atributy

Atributy
noescape Pole nebude escapovat html
noprint Pole nebude zobrazené (lze zapnout pomocí $tpl->enable('pole'))
lb "string" Popisek sloupce na který lze kliknutím řadit
sort Zapne řazení sloupce
skip Tento sloupec nebude vypsaný v elementech {grid.fields} a {grid.labels}
Modifikátory
{sloupec.lb} Popisek sloupce (s možností řazení)
{sloupec.value} Prostá hodnota pole bez jakýchkoliv úprav definovaných v elements
👁 string title lb "Název produktu" sort

Elementy a atributy

class grid Hlavička šablony, definuje parametry platné pro celý grid.
Atributy
name "string" Název gridu, musí být unikátní pro každý grid na stránce
url | route "string" Url nebo route pro generování stránkovacích odkazů gridu, v případě, že standardně generované odkazy nevyhovují.
Modifikátory
{grid.labels} Vypíše popisky (lb) všech polí gridu jako řádek tabulky
{grid.fields} Vypíše všechny pole gridu jako řádek tabulky
{block items} ... {/block} Tento blok se vypíše pro každý záznam gridu
👁 class grid name "products"
pager Navigátor (stránkovátko) - v základním nastavení obsahuje seznam odkazů na stránky.
Atributy
size "number" Počet stránek zobrazených ve stránkovátku Default: 10
pglen "number" Délka stránky (počet záznamů na stránku) gridu Default: 20
ul Generuje navigátor jako html seznam <ul> - vhodnější pro použití s css frameworkem bootstrap
Modifikátory
{pager} Vypíše implicitní navigátor
{pager.first} Odkaz na první stránku
{pager.last} Odkaz na poslední stránku
{pager.prev} Odkaz na předchozí stránku
{pager.next} Odkaz na další stránku
{pager.pages} Odkazy na stránky
{pager.page} Číslo aktuální vybrané stránky
{pager.all} Odkaz, který zobrazí všechny řádky gridu na jedné stránce
{pager.visible} Vrací text "visible" pokud má grid více stránek, jinak "hidden". Lze využít k css skrývání pageru.
{pager.maxpage} Počet stránek gridu
{pager.total} Počet řádků gridu
👁 pager pager pglen "100"

Form

Seznam a popis elementů formuláře (pclib\Form)

Pro kterékoliv pole formuláře lze použít následující atributy:

Atributy
lb "popisek" Popisek pole
noprint Pole nebude zobrazené
noedit Do pole nelze zapisovat (disabled)
nosave Pole se nebude ukládat do databáze
default "string" Implicitní hodnota pole
required Pole je povinné
html_🔹 "value" Nastaví html atribut 🔹 na hodnotu "value" - např. html_class "btn btn-primary" → <button class="btn btn-primary">
Modifikátory
{pole.value} Prostá hodnota pole
{pole.lb} Popisek (label) pole
{pole.err} Chybové (validační) hlášení pole, pokud je nastavené.

Elementy a atributy

class form Hlavička šablony, definuje obecné parametry pro formulář.
Atributy
name "string" Název formuláře
action "url" | route "string" Url nebo route kam bude formulář odeslán.
jsvalid | html5 Zapne javascript / html5 validaci polí formuláře. Možnost "jsvalid" vyžaduje skript pclib.js
get Formulář bude odeslán s použitím HTTP metody GET (implicitně se používá POST)
noformtag Nevygeneruje hlavičku a patičku formuláře (tag <form>)
Modifikátory
{form.fields} Vypíše všechny pole formuláře jako tabulku
👁 class form route "products/id:{GET.id}" html5
input Vytvoří tag <input>
Atributy
size "size" | size "size/maxlength" Velikost a maxlength atributy inputu - např. size "10/100"
hidden Vytvoří input type=hidden
color Vytvoří input type=color
range Vytvoří input type=range
email Povolí pouze platnou email adresu
number | number "strict" Validuje celé číslo. Při zadaném "strict" nedovolí nečíselnou hodnotu zadat, jinak vstup konvertuje na integer
date | date "format" Datumové pole. Formátuje databázový datum do čitelné podoby. (Implicitní formát je 'd. m. Y')
password | password "minlength" Vytvoří input type=password
file [into "path", size_mb "size", accept "file-types"] Vytvoří input type=file. Lze zadat cestu k uložení souboru, max. velikost v MB a akceptované typy souborů.
pattern "regex" Validuje input proti regulárnímu výrazu
hint "Text" Zobrazí v prázdném inputu text nápovědy (placeholder)
👁 input amount size "4" number lb "Počet kusů" default "1" required
👁 input image file lb "Obrázek" size_mb "4.0" accept "image/*"
text Vytvoří tag <textarea>
Atributy
size "{sloupce}x{radky}" Velikost textarea
maxlength "number" Maximální počet znaků
hint "Text" Zobrazí v prázdném inputu text nápovědy (placeholder)
👁 text description lb "Popis:" size "50x4" required
select Vytvoří tag <select>
Atributy
list | query | lookup "string" Zdroj položek selectu může být: ❶ textový seznam, sql dotaz nebo číselník
datasource "callback" | datasource "action" nebo: ❷ funkce nebo akce controlleru
size "n" Počet řádků selectu
multiple Lze vybrat víc než jednu možnost
emptylb "Text" Text pro prázdný (nevybraný) select
noemptylb select nemá stav "nevybráno"
notranslate Číselník nebude zahrnutý mezi texty k překladu.
👁 select status lookup "order_status"
👁 select published list "1,ano,2,ne" default "2"
👁 select vendor query "select id,name from vendors" lb "Dodavatel"
👁 select vendor query "select id,name,category from vendors" lb "Dodavatel seskupený podle kategorií"
listinput Vytvoří tag <datalist>
Atributy
list | query | lookup "string" Zdroj položek selectu může být: ❶ textový seznam, sql dotaz nebo číselník
datasource "callback" | datasource "action" nebo: ❷ funkce nebo akce controlleru
notranslate Číselník nebude zahrnutý mezi texty k překladu.
👁 listinput vendor query "select id,name from vendors" size "30" lb "Dodavatel"
radio Vytvoří skupinu radiobuttonů
Atributy
list | query | lookup "string" Zdroj položek může být: ❶ textový seznam, sql dotaz nebo číselník
datasource "callback" | datasource "action" nebo: ❷ funkce nebo akce controlleru
columns "n" Počet sloupců ve kterých se skupina inputů vykreslí
notranslate Číselník nebude zahrnutý mezi texty k překladu.
👁 radio transport lb "Doprava" list "1,Poštou,2,EMS pošta,3,Osobní odběr" default "1"
check Vytvoří checkbox nebo skupinu checkboxů
Atributy
list | query | lookup "string" Zdroj položek může být: ❶ textový seznam, sql dotaz nebo číselník
datasource "callback" | datasource "action" nebo: ❷ funkce nebo akce controlleru
columns "n" Počet sloupců ve kterých se skupina inputů vykreslí
notranslate Číselník nebude zahrnutý mezi texty k překladu.
Pokud není zadaný zdroj položek, vytvoří se jediný checkbox.
👁 check agreement lb "Souhlasím s obchodními podmínkami" required
👁 check categories list "1,Nábytek,2,Dekorace" lb "Zobrazit kategorie" default "1,2"
button Vytvoří tlačítko (tag <button>)
Atributy
href "url" | route "route" [popup | popup "parametry"] Vytvoří tlačítko, které přesměruje na url nebo routu. Může se otevřít v popup okně.
onclick "javascript" Vytvoří tlačítko, které spustí javascript.
confirm "dotaz" Zobrazí javascript confirm dialog s dotazem.
👁 button submit lb "Odeslat"
👁 button delete lb "Smazat" confirm "Opravdu smazat?"
👁 button details route "products/details/id:{id}" popup

Layout

Seznam a popis elementů layoutu aplikace (pclib\Layout)

Elementy a atributy

head <head> sekce stránky, umožňuje vkládat styly a skripty
Atributy
scripts "string" Čárkami oddělený seznam css a js souborů, které budou vloženy do hlavičky.
👁 head HEAD scripts "css/website.css,js/website.js"
Vložené odkazy na css a js budou opatřené verzí, která se změní při každé změně souboru, aby došlo k obnovení cache.

Přidávat skripty do sekce head lze i programově, pomocí funkce $app->layout->addScripts()

string CONTENT Sem se vloží veškerý výstup aplikace
messages Sem se vloží zprávy odeslané pomocí $app->message() a $app->error()
navigator Vytváří breadcrumb (drobečkovou) navigaci.
👁 string CONTENT noescape
   messages PRECONTENT noescape
   navigator NAVIG

Odkaz na aktuální stránku se přidá do navigátoru funkcí $app->layout->bookmark($level, $titulek)

Model

Seznam a popis elementů šablony databázového modelu (pclib\orm\Model)

Elementy a atributy

class model Hlavička šablony, definuje parametry platné pro celý model.
Atributy
table "name" Název databázové tabulky modelu.
👁 class model table "products"
relation Vytvoří vazbu na jiný model.
Atributy
table "name" Název databázové tabulky vazebního modelu.
key "column" Název sloupce použitého k vytvoření vazby.
one | owner | many | many_to_many [through "pivotTableName"] Typ vazby: 1:1, N:1, 1:N nebo M:N (používá k vazbě pivot tabulku)
👁 relation vendor table "vendors" key "vendor_id" owner
   relation variants table "product_variants" key "product_id" many

V kódu se pak na vazební modely lze odkazovat například takto: $product->vendor->title; foreach($product->variants as $variant) {...};

column Pro jakýkoliv sloupec modelu lze definovat validace, které se kontrolují při každé práci s modelem.
Atributy
Validační atributy jsou shodné s validací ve formuláři - například: required, email, date, nosave...
get | get "methodName" get specifikuje "calculated" pole - pro získání jeho hodnoty se volá metoda modelu getNazevPole()
set | set "methodName" set specifikuje "calculated" pole - pro nastavení jeho hodnoty se volá metoda modelu setNazevPole($value)
👁 column title required
event ondelete Definuje chování vazebních záznamů při smazání modelu. Implicitně jsou vazební záznamy ignorovány.
Atributy
delete "list" Při smazání modelu smazat i vazební záznamy uvedené v seznamu "list".
cancel_when "list" Pokud existuje vazební záznam ze seznamu "list", model nebude smazán.
👁 event ondelete delete "variants"

Konfigurační parametry

pclib.errors Chybová hlášení
display true/false Zobrazovat chybová hlášení (volba 'php' nastaví php chybová hlášení bez zásahu pclib)
develop true/false Zobrazovat v chybových hlášení vývojářské informace
log true/false Logovat chybová hlášení
template string Cesta k šabloně chybového hlášení (implicitně pclib/tpl/error.tpl)
pclib.security Zabezpečení
tpl-escape true/false Ošetří html při výpisu proměnných šablony (ochrana proti útoku XSS)
csrf true/false Přidá do formuláře skryté pole na ochranu před CSRF útokem.
form-prevent-mass true/false Neodešle pole formuláře nedefinované v elements sekci. Ochrana před mass assignment attack.
pclib.app Aplikace
layout string Cesta k layout šabloně aplikace (např. 'tpl/layout.tpl')
default-route string Implicitní routa aplikace (např. 'site/welcome')
language string Jazyk aplikace (např. 'cs')
debugmode true/false Zapne debugovací lištu
friendly-url true/false Zapne zjednodušená url
autostart array Seznam služeb, které se automaticky spustí při startu aplikace. (např. ['db', 'auth'])
pclib.locale Lokalizace
date, datetime string Formát datumového pole (implicitně 'd.m.Y' a 'd.m.Y H:i:s')
pclib.paths Cesty k souborům
assets string Cesta k webovým souborům pclib - js, css, img. (Implicitně pclib/www)
templates string Cesta k defaultním šablonám pclib (Implicitně pclib/tpl)

Služby (services)

service.auth | pclib.auth Autorizační systém
algo string Algoritmus hashování hesel (md5 | bcrypt | bcrypt-md5)
secret string Řetězec pro posílení md5 hashe hesla. Libovolná náhodná sekvence znaků.
realm string V případě, že více aplikací sdílí přístup přihlášeného uživatele, musí mít stejný realm
dsn string Databázový connection string. Není-li nastavený, použije se databázové připojení aplikace.
service.db Databáze
dsn string Databázový connection string. (např. 'pdo_mysql://user:password@host/database')
service.fileStorage Ukládání souborů
rootDir string Cesta ke kořenovému adresáři úložiště souborů.

Události

Id události Parametry ($event->data) Popis
app.error message Chyba aplikace
app.before-run, app.after-run action Před/po spuštění controlleru
app.before-out, app.after-out Před/po výpisu obsahu webu
auth.login, auth.logout user Přihlášení/odhlášení uživatele
controller.init Inicializace controlleru
db.before-query, db.after-query sql; sql, query Před/po spuštění databázového dotazu
file.before-save, file.after-save loc, file Před/po uložení souboru
file.before-delete, file.after-delete loc, file Před/po smazání souboru
form.submit Po odeslání formuláře
form.before-out, form.after-out Před/po zobrazení formuláře
form.validate Po validaci formuláře
form.update action, table, where Před aktualizací hodnot formuláře v databázi
grid.before-out, grid.after-out Před/po zobrazení gridu
grid.before-row, grid.after-row row, index Před/po zobrazení řádku gridu
logger.log message Před zápisem zprávy do logu
model.before-save, model.after-save ok Před/po uložení modelu (ORM)
model.before-delete, model.after-delete ok Před/po smazání modelu (ORM)
router.redirect url Před přesměrováním na jinou url
php-exception, php-warning Exception Před zpracováním php výjjimky nebo varování
tpl.after-load path Po načtení šablony
tpl.before-out, tpl.after-out Před/po zobrazení šablony
mailer.create sender Inicializace maileru
mailer.before-send, mailer.after-send message Před/po odeslání mailu