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
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"
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,."
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
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}"
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"
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}"
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
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"
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"
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
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
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/*"
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
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í"
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"
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"
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"
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> 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
Hlavička šablony, definuje parametry platné pro celý model. |
Atributy |
table "name" |
Název databázové tabulky modelu. |
👁 class model table "products"
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) {...};
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
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 |