[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Холивар про шаблонизатор.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
twin
Цитата (Arh @ 25.11.2014 - 09:59)
Как бы я не старался извернуться, функционал шаблонизатора был нужен только для того, что бы подключить дочерний шаблон и пользоваться тегами:
{$var} вместо <?php echo $var;?> - для вывода переменных
{CONST} вместо <?php echo constant('CONST');?> - для вывода констант
{{TAG}} вместо <?php echo tpl::content('TAG');?> - для вывода каких то данных, например содержимого модулей.

Вот это как раз совершенно никому не нужно. Впрочем в моём велосипеде есть такая опция, только нафиг она нужна, не понятно.

Что касается наследования, тут соль не в том, как подключать шаблоны, а в том, что можно из дочернего управлять родительским. Это реально очень полезная вещь.

Шаблонизатор нужен как раз для того, чтобы упростить работу с шаблонами, а не усложнить всякими псевдотегами {var} и иже с ними. Какой в них смысл, если ту же рядом юзать форечи и ифы?

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Игорь_Vasinsky
Цитата
Не так понял.
То что приходит из базы это не шаблон, и к шаблонизатору отношения не имеет. Так и будет отображено {$50}

<?php $var = '{$50}';?>

<div>{$var}</div>

не) ты опять не так понял))

ты парсишь шаблон, а там {$50}

парсер встречает это и пытается сделать <?=$50;?>

и тут все удивлены)

я не вижу причину спора. не использую шаюлонизаторы т.к. жрут память.
писал свой - но не использую т.к. велосипедный велосипед

использую нативный php

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Arh
chee
Точно такой же говнокод.

Нет в модели метода getColor.
И я начал со слов "в смарти PHP не работает"

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
vagrand
У меня только один вопрос - зачем тему воскресили? Все обсуждение опять пошло по тому же сценарию, что и прошлых 5-ть страниц. Ничего нового.

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
Игорь_Vasinsky
Цитата
в смарти PHP не работает

ты удивишься) но работает - тока включить нужно в конфиге.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
twin
Цитата (Игорь_Vasinsky @ 25.11.2014 - 10:18)
Цитата
в смарти PHP не работает

ты удивишься) но работает - тока включить нужно в конфиге.

Там есть тег вроде специальный. Ничего не нужно даже мудрить с конфигой. Только для чего это всё...

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Arh
Игорь_Vasinsky
Цитата
ты парсишь шаблон, а там {$50}
парсер встречает это и пытается сделать <?=$50;?>


В смысле если чувак вдруг прям в шаблоне решил написать текст {$50}?
При том, что знает что такой синтаксис предназначен для переменных и ему вылезит ошибка?
Ну если уж так приспичит, сделает спец символами.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Игорь_Vasinsky
Цитата
Там есть тег вроде специальный.


есть, но он будет вырезаться если не разрешить его.

http://www.smarty.net/docsv2/ru/variable.security.tpl
http://livestreet.ru/blog/559.html
Цитата
$smarty->php_handling = SMARTY_PHP_ALLOW;


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Arh
vagrand
Цитата
У меня только один вопрос - зачем тему воскресили? Все обсуждение опять пошло по тому же сценарию, что и прошлых 5-ть страниц. Ничего нового.

Так холивар же =)

Игорь_Vasinsky
Цитата
ты удивишься) но работает - тока включить нужно в конфиге.

Да, я знаю, но верстальщик не может менять конфиг, он только шаблоны верстает.
Да и смысл что то включать, если php на php сервере и так работает?

twin
Цитата
Там есть тег вроде специальный.

Вроде как в последних версиях выпилили.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
chee
Invis1ble, лол, я бы мог ответить, но зря ты мне вопрос не задал. wink.gif


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Arh
Цитата (Invis1ble @ 25.11.2014 - 14:15)
сейчас приведу пример (реальный кейс)

у меня есть лэйаут, от которого я наследуюсь.
в зависимости от контроллера мне нужно проставить определенный класс этому лэйауту.
на твиге я делаю примерно так:
<div class="layout {{ class }}"></div>

{% extends 'layout.html.twig' %}
{% set class = 'some-class' %}

в контроллере я просто делаю вывод нужного наследника и всё.

Теперь расскажи, как бы ты сделал на пыхе.

Пытаюсь понять как это работает у тебя, зачем и вообще что это =)
Что за кейс, что за лэйаут?
Что в шаблоне layout.html.twig?

chee
Цитата
Invis1ble, лол, я бы мог ответить, но зря ты мне вопрос не задал.  wink.gif

Ответь, а то я не понял вопроса)



_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Invis1ble
chee
пусть сначала он ответит :) но мне интересно и твое решение

Arh
кейс - случай, реальный - часто встречающийся на практике (по крайней мере в моей архитектуре)
шаблон layout - родительский шаблон, обёртка своего рода

еще раз.
родитель:
<div class="parent"></div>

пример наследника:
<div class="child"></div>

есть множество наследников. Для каждого из них нужно назначить специфический класс в родителе.
Естественно, пример сильно упрощён. Я тут даже не касаюсь темы переопределения блоков.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Arh
Invis1ble
Я понял, что не так понимал =)
Почитал про наследования и наткнулся на http://habrahabr.ru/post/134421/
Так что можно =) Правда не так красиво, хотя синтаксис твига красивым тоже не назовёшь.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Invis1ble
за такие (ob_start() и пр.) вещи в шаблонах надо руки с корнем вырывать
не хватает еще каких-нибудь mysql_query туда влепить

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Arh
Вот так у меня работает =)

главный
<div class="index">
{$block}
</div>


дочерний
<?php ob_start();?>

<div
class="child">
Какие то данные
</div>

<?php
$data['block'] = ob_get_clean();?>

<?php tpl
::display('index.tpl',$data);?>


Invis1ble
Цитата
за такие (ob_start() и пр.) вещи в шаблонах надо руки с корнем вырывать

А твиг как это делает под капотом?

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.