Смартито смърди от всякъде. Не ти го препоръчвам, особено за нови проекти. Ако оправяш стари бакии, неминуемо ще се сблъскаш с него, но иначе бягай далеч. Не случайно всички по-нови Frameworks работят с алтернативни енджини.
Twig-a става, даже доста.
Пробвай и php-liquid - супер лек клонинг на енджина за Rails.
Ако търсиш нещо наистина бързо и елементарно, но с малко опции, ти препоръчвам един хибрид - Tenjin. Един клас върши цялата работа. Но наследяването куца.
ПС: За толкова елементарни нужди, като разучаване на тимплейт енджин, не ти трябва голямо комюнити. Едва ли нуждите ти ще са такива, че да правиш някакви академични разширения и подобрения. Просто ползваш шаблони и чат-пат някой филтър.
Да де, ама като забиеш в бъговете на Smarty и почнеш сам да си оправяш класове, дето от php 5.1 не са пипани, бая ще попсуваш комюнитито.
Само им виж сайта, доста показателно за тимпейт енджин е.
Ако си решил да минеш на друго ниво пробвай django на питон.
Това е простичко. Мога да ти дам пример. Създай 3 файла:В twig един цикъл не можах да завъртя.
Търся нещо което се ползва и има уроци и ексампел за него, затова почнах от по-известните.
php-liquid горе/долу докарва на twig на първо четене. Пак утре на трезва глава ще го пробвам.
<?php
require_once dirname(__FILE__).'/lib/Twig/Autoloader.php';
Twig_Autoloader::register(true);
$loader = new Twig_Loader_Filesystem('templ');
$twig = new Twig_Environment($loader);
<?php
require "bootstrap.php";
$assign = array(
'users' => array(
array('username'=>'user1', 'gsm'=>'012354'),
array('username'=>'user2', 'gsm'=>'123540'),
array('username'=>'user3', 'gsm'=>'235487'),
),
'root'=>"D4rkN1ll"
);
echo $twig->render('index.html', $assign);
?>
<h1>Members</h1>
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
Admin: -=[ {{ root }} ]=-
Това е простичко. Мога да ти дам пример. Създай 3 файла:
bootstrap.php
PHP:<?php require_once dirname(__FILE__).'/lib/Twig/Autoloader.php'; Twig_Autoloader::register(true); $loader = new Twig_Loader_Filesystem('templ'); $twig = new Twig_Environment($loader);
index.php
PHP:<?php require "bootstrap.php"; $assign = array( 'users' => array( array('username'=>'user1', 'gsm'=>'012354'), array('username'=>'user2', 'gsm'=>'123540'), array('username'=>'user3', 'gsm'=>'235487'), ), 'root'=>"D4rkN1ll" ); echo $twig->render('index.html', $assign); ?>
templ/index.html
И копирай директорията lib/ от архива на twig.PHP:<h1>Members</h1> <ul> {% for user in users %} <li>{{ user.username|e }}</li> {% endfor %} </ul> Admin: -=[ {{ root }} ]=-
Резултат:
Ето направо архив със сорса и twig енджина: http://dox.bg/files/dw?a=b0bdce23c6
Twig е елементарен, просто иска да го захапеш веднъж и няма пускане .
CREATE DATABASE IF NOT EXISTS `test`;
USE `test`;
-- Dumping structure for table test.users
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`gsm` varchar(18) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `users` (`id`, `name`, `gsm`) VALUES
(1, 'User1', '08995647'),
(2, 'User 2', '+359084451'),
(3, 'User 3', '00256554');
<?php
$dbh = new PDO('mysql:dbname=test;host=localhost', 'username', 'password');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT users.name as username, users.gsm as gsm FROM users";
$sth = $dbh->query($sql);
$row = $sth->fetchAll(PDO::FETCH_ASSOC);
$assign['users'] = $row;
$assign['root'] = "D4rkN1ll";
require "bootstrap.php";
echo $twig->render('index.html', $assign);
?>