Uživatelské nástroje

Nástroje pro tento web


twig

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.


Předchozí verze
twig [2023/12/26 19:13] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 +====== Twig ======
 +
 +Šablonovací systém pro PHP.
 +
 +**Twig home page:** http://twig.sensiolabs.org/
 +
 +**Demo examples:** http://twig.isn.cz/
 +
 +===== Požadavky =====
 +
 +  * pro Twig 1.13.2 miminálně PHP 5.2.4
 +
 +===== Instalace pomocí Composeru =====
 +
 +Protože mám v konfiguraci PHP (/etc/php.ini) volbu **allow_url_fopen=Off**, tak jsem do PHP CLI povolil hodnotu **On** pro stažení a instalaci.
 +
 +**Stažení**
 +
 +<code>
 +shell# mkdir -p /data/install/twig
 +shell# cd /data/install/twig
 +shell# curl -s http://getcomposer.org/installer | php -d allow_url_fopen=On
 +</code>
 +
 +**Vytvoření konfiguračního souboru pro Composer**
 +
 +<file json composer.json>
 +{
 +    "require": {
 +        "twig/twig": "1.*"
 +    }
 +}
 +</file>
 +
 +**Instalace přes Composer**
 +
 +<code>
 +shell# php -d allow_url_fopen=On composer.phar install
 +</code>
 +
 +===== Příklady použití =====
 +
 +Přejít do adresáře projektu.
 +
 +<code>
 +shell# mkdir lib cache templates css
 +shell# cp -r /data/install/twig/vendor/twig/twig/lib/Twig ./lib
 +</code>
 +
 +==== First Page ====
 +
 +**Demo example page:** http://twig.isn.cz/first.php
 +
 +<file html "templates/base.twig">
 +<!DOCTYPE html>
 +<html>
 +    <head>
 +        {% block htmlHead %}
 +        <title>
 +            {% block titleHead %}
 +            {% endblock %}
 +        </title>
 +        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 +        <link rel="stylesheet" href="./css/style.css" />
 +        {% endblock %}
 +    </head>
 +    <body>
 +        <div id="content">
 +            {% block content %}
 +            {% endblock %}
 +        </div>
 +        <div id="footer">
 +            {% block footer %}
 +            Demo created by Jiří Blažek (jiri.blazek@isn.cz) | <a href="https://www.isn.cz">ISN.CZ</a>
 +            {% endblock %}
 +        </div>
 +    </body>
 +</html>
 +</file>
 +
 +<file html "templates/first.twig">
 +{% extends "base.html" %}
 +{# comment: include meta tags into block htmlHead #} 
 +{% block htmlHead %}
 +{# comment: include content of htmlHead block of parent #}
 +{{ parent() }}
 +<meta name="author" content="Jiří Blažek <jiri.blazek@isn.cz>" />
 +<meta name="Keywords" content="twig" />
 +<meta name="Description" content="Twig Demo Examples" />
 +<meta name="Robots" content="all|index|follow" />
 +{% endblock %}
 +
 +{% block titleHead %}
 +{{ firstPageTitle }}
 +{% endblock %}
 +
 +{% block content %}
 +<a href="index.php">&larr; Back to Demo Examples list of Twig</a>
 +
 +<br /><br /><strong>Url doc: </strong><a href="{{ firstPageDocUrl }}">{{ firstPageDocUrl }}</a>
 +
 +<br /><br />This is example text in content div.
 +{% endblock %}
 +</file>
 +
 +<file php "first.php">
 +<?php
 +
 +/*
 + * This file is demo of Twig.
 + *
 + * Author: Jiří Blažek <jiri.blazek@isn.cz>
 + * Doc: https://www.isn.cz/kb/doku.php/twig#first-page
 + 
 + */
 +
 +require_once './lib/Twig/Autoloader.php';
 +Twig_Autoloader::register();
 +
 +// loading templates, path to templates
 +$loader = new Twig_Loader_Filesystem('./templates');
 +
 +// environment options
 +$twig = new Twig_Environment($loader, array(
 +    'cache' => './cache', // path to compilation cache, default to false (disable caching)
 +    'debug' => false, // default to false
 +    'charset' => 'utf-8', // default to utf-8
 +    'base_tamplate_class' => 'Twig_Template', // default to Twig_Template 
 +    'auto_reload' => false, // default to false
 +    'strict_variables' => false, // default to false, false = Twig will silently ignore invalid variables (variables and or attributes/methods that do not exist) and replace them with a null value, true = Twig throws an exception instead
 +    'autoescape' => 'html', // default to true, true = auto-escaping will be enabled by default for all templates, false = disable, or scaping strategy to use (html, jscss, url, html_attr) or callback
 +    'optimizations' => -1 // default to -1, -1 = all optimizations are enabled, 0 = disabled
 +        )
 +);
 +
 +// load template first.html
 +$template = $twig->loadTemplate('first.twig');
 +
 +// render page with this variables
 +echo $template->render(array('firstPageTitle' => 'First Page', 'firstPageDocUrl' => 'https://www.isn.cz/kb/doku.php/twig#first-page'));
 +
 +?>
 +</file>
 +
 +<file css "css/style.css">
 +root { 
 +    display: block;
 +}
 +
 +#content {
 +    width: 90%;
 +    min-height: 500px;
 +    border-top: 2px solid #000000;
 +}
 +
 +#footer {
 +    width: 90%;
 +    min-height: 100px;
 +    border-top: 2px solid #000000;
 +}
 +</file>