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 |