Предложете темплейт енджин

Sky

Well-Known Member
Досега се мъча с един мой който е...
Предложете нещо което лесно да се учи и ползва, няма да правя чудеса с него.
 
От: Предложете темплейт енджин

Предполагам за PHP става въпрос:

1) Twig - http://twig.sensiolabs.org/
2) Smarty: http://www.smarty.net/

След като не ползваш до момента вероятно и къстъм фреймуърк имаш. Ако решиш да ползваш разгледай и Laravel, който също има темплейт енджин: http://laravel.com/docs/4.2/templates
 
От: Предложете темплейт енджин

Точно между тези два ми беше и дилемата.
Та реших да попитам. Някак смарти ми се струва, че има по-голямо къмюнити.
 
От: Предложете темплейт енджин

Смартито смърди от всякъде. Не ти го препоръчвам, особено за нови проекти. Ако оправяш стари бакии, неминуемо ще се сблъскаш с него, но иначе бягай далеч. Не случайно всички по-нови Frameworks работят с алтернативни енджини.
Twig-a става, даже доста.
Пробвай и php-liquid - супер лек клонинг на енджина за Rails.
Ако търсиш нещо наистина бързо и елементарно, но с малко опции, ти препоръчвам един хибрид - Tenjin. Един клас върши цялата работа. Но наследяването куца.

ПС: За толкова елементарни нужди, като разучаване на тимплейт енджин, не ти трябва голямо комюнити. Едва ли нуждите ти ще са такива, че да правиш някакви академични разширения и подобрения. Просто ползваш шаблони и чат-пат някой филтър.
 
От: От: Предложете темплейт енджин

А другото е, че с twig съм запознат покрай phpbb3 и ми допада, ама все си мислех за нещо по-елемнтарно.
Смартито смърди от всякъде. Не ти го препоръчвам, особено за нови проекти. Ако оправяш стари бакии, неминуемо ще се сблъскаш с него, но иначе бягай далеч. Не случайно всички по-нови Frameworks работят с алтернативни енджини.
Twig-a става, даже доста.
Пробвай и php-liquid - супер лек клонинг на енджина за Rails.
Ако търсиш нещо наистина бързо и елементарно, но с малко опции, ти препоръчвам един хибрид - Tenjin. Един клас върши цялата работа. Но наследяването куца.

ПС: За толкова елементарни нужди, като разучаване на тимплейт енджин, не ти трябва голямо комюнити. Едва ли нуждите ти ще са такива, че да правиш някакви академични разширения и подобрения. Просто ползваш шаблони и чат-пат някой филтър.

Да, де ама друго си е като потърсиш нещо и да го има решено 1000 пъти преди теб.
 
От: Предложете темплейт енджин

Да де, ама като забиеш в бъговете на Smarty и почнеш сам да си оправяш класове, дето от php 5.1 не са пипани, бая ще попсуваш комюнитито.
Само им виж сайта, доста показателно за тимпейт енджин е.
 
От: От: Предложете темплейт енджин

Докарва ми на http://ganbox .com/ :D сео мастърите.
А за twig какво ти е мнението?
Бая съм бос тук, досега ги игнорирах напълно и си работех по мой си начин.
Да де, ама като забиеш в бъговете на Smarty и почнеш сам да си оправяш класове, дето от php 5.1 не са пипани, бая ще попсуваш комюнитито.
Само им виж сайта, доста показателно за тимпейт енджин е.
 
От: Предложете темплейт енджин

Ако се чудиш, грабвай Twig-a. Изповядва класическия шаблонен стил и има всичко, дето го има и Smarty. Ако имаш питанки питай, въпреки, че се съмнявам да не можеш да намериш инфо или пример в документацията.
 
Ако си решил да минеш на друго ниво пробвай django на питон.
 
От: Re: Предложете темплейт енджин

Мисля да си остана на PHP. Сега лягам, утре на трезва глава ще прегледам предложенията.
Мерси.
Ако си решил да минеш на друго ниво пробвай django на питон.
 
От: Предложете темплейт енджин

Здравейте,
аз от Smarty съм доволен. Единствено е бавен, но това за повечето проекти не е проблем.
Не ми се е налагало да бъркам по класовете му, ако нещо ми потрябва си пиша модификатор или плугин.
Като цяло последните проекти ги правя без темплейт енджин или ползвам този, който идва по подразбиране със съответната 'работната рамка'. Присаждал съм Smarty на CodeIgniter но не ми хареса.
Поздрави,
Константин.
 
От: Предложете темплейт енджин

Сега коа изкарате и някоя тема или скрипт написани на twig сте златни. Аз лично нищо не намерих.
 
От: Предложете темплейт енджин

Ами примерно любимия ми database-less CMS (http://picocms.org/) използва twig темплейти. За други не знам, но не съм и търсил.
 
От: Предложете темплейт енджин

Един от най-популярните и модерни PHP-Frameworks е Symfony. Ако не си чул още за симфонията, е време да се запознаеш с нея, просто е невероятен фреймуърк. И естествено ползва Twig.
Към Симфонията има базиран един микро-фреймуърк, който също ползва Twig - Silex.
Ето и списък с проекти, базирани на Symfony:
http://symfony.com/projects
А тук има и сайтове и проекти:
http://trac.symfony-project.org/wiki/ApplicationsDevelopedWithSymfony
 
От: Предложете темплейт енджин

За twig нищо не намирам за разлика от смарти. Изгубих един ден в ровене за елементарни неща.
А със смарти за 1 час и съм готов.
 
От: Предложете темплейт енджин

Ок, ползвай си Смарти. Вероятно няма да има голяма разлика, кой точно енджин ще ползваш.
Ако натрупаш повече опит с различни енджини, ще усещаш разликите и ще те дразнят. Но това е като пиенето на вино. А и всеки си има предпочитания.
Ако искаш сподели, кое те затрудни в Twig. Или в Smarty, ще се радвам да съм полезен с идея.
Както казах, аз лично съм фен на Liquid, именно защото е много лек, прост и мога да си дописвам бързо каквото ми е нужно. Вероятно след време ще потърсиш и нещо подобно и ще разбереш, че нямаш нужда от слон за да преместиш сламка. Но хората в началото обичат да се презастраховат. Може би за това ползват и безсмислици, като WP.
 
От: Предложете темплейт енджин

В twig един цикъл не можах да завъртя.
Търся нещо което се ползва и има уроци и ексампел за него, затова почнах от по-известните.
php-liquid горе/долу докарва на twig на първо четене. Пак утре на трезва глава ще го пробвам.
 
От: Предложете темплейт енджин

В twig един цикъл не можах да завъртя.
Търся нещо което се ползва и има уроци и ексампел за него, затова почнах от по-известните.
php-liquid горе/долу докарва на twig на първо четене. Пак утре на трезва глава ще го пробвам.
Това е простичко. Мога да ти дам пример. Създай 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
PHP:
<h1>Members</h1>
<ul>
    {% for user in users %}
        <li>{{ user.username|e }}</li>
    {% endfor %}
</ul>

Admin: -=[ {{ root }} ]=-
И копирай директорията lib/ от архива на twig.

Резултат:
168u8mb.png


Ето направо архив със сорса и twig енджина: http://dox.bg/files/dw?a=b0bdce23c6

Twig е елементарен, просто иска да го захапеш веднъж и няма пускане :).
 
От: От: Предложете темплейт енджин

Благодаря ти много. А същото с mysql заявка? Или туториал за това?
Това е простичко. Мога да ти дам пример. Създай 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
PHP:
<h1>Members</h1>
<ul>
    {% for user in users %}
        <li>{{ user.username|e }}</li>
    {% endfor %}
</ul>

Admin: -=[ {{ root }} ]=-
И копирай директорията lib/ от архива на twig.

Резултат:
168u8mb.png


Ето направо архив със сорса и twig енджина: http://dox.bg/files/dw?a=b0bdce23c6

Twig е елементарен, просто иска да го захапеш веднъж и няма пускане :).
 
От: Предложете темплейт енджин

Разбирам защо питаш. Чудиш се как да структурираш масива, който подаваш на twig-енджина.
Ще ти дам пример с PDO. И не ти трябва някакъв туториал, нещата не са толкова сложни. Трябва ти просто сламка. Ще имаш още един-два такива препъни камъни.
Нещо важно: поне в началото не включвай кеширането на тимлейтите, може много да страдаш, докато се усетиш защо гърми някаква дреболия. Няма значение с който тимплейт енджин работиш.

MySQL
Код:
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');
Приемаме, че си оставил файловете от горния пример, за да не ги пиша отново. И ще създадем само един файл, който да чете от MySQL-базата:
db_test.php
PHP:
<?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);
?>
Слагаш го в същата директория, където е bootstrap.php.
В ртезултат ще получиш абсолютно същото, като на картинката по-горе.
Ето и целия сорс код с дъмп на базата данни: http://dox.bg/files/dw?a=aeaba8fa1f

ПС: Няма нужда да асоциираш данните при SQL-заявката. Т.е. можеш да го направиш и така:
$sql = "SELECT name, gsm FROM users";
С PDO::FETCH_ASSOC автоматично ще се асоциират с имената на колоните. Но трябва да промениш в тимплейт-файла username на name.
 

Горе