Цитата (Arh @ 25.11.2014 - 09:59) |
Как бы я не старался извернуться, функционал шаблонизатора был нужен только для того, что бы подключить дочерний шаблон и пользоваться тегами: {$var} вместо <?php echo $var;?> - для вывода переменных {CONST} вместо <?php echo constant('CONST');?> - для вывода констант {{TAG}} вместо <?php echo tpl::content('TAG');?> - для вывода каких то данных, например содержимого модулей. |
Вот это как раз совершенно никому не нужно. Впрочем в моём велосипеде есть такая опция, только нафиг она нужна, не понятно.
Что касается наследования, тут соль не в том, как подключать шаблоны, а в том, что можно из дочернего управлять родительским. Это реально очень полезная вещь.
Шаблонизатор нужен как раз для того, чтобы упростить работу с шаблонами, а не усложнить всякими псевдотегами {var} и иже с ними. Какой в них смысл, если ту же рядом юзать форечи и ифы?
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Игорь_Vasinsky
25.11.2014 - 14:17
Цитата |
Не так понял. То что приходит из базы это не шаблон, и к шаблонизатору отношения не имеет. Так и будет отображено {$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
chee
Точно такой же говнокод.
Нет в модели метода getColor.
И я начал со слов "в смарти PHP не работает"
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
vagrand
25.11.2014 - 14:18
У меня только один вопрос - зачем тему воскресили? Все обсуждение опять пошло по тому же сценарию, что и прошлых 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
25.11.2014 - 14:18
Цитата |
в смарти 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
Цитата (Игорь_Vasinsky @ 25.11.2014 - 10:18) |
Цитата | в смарти PHP не работает |
ты удивишься) но работает - тока включить нужно в конфиге.
|
Там есть тег вроде специальный. Ничего не нужно даже мудрить с конфигой. Только для чего это всё...
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Игорь_Vasinsky
Цитата |
ты парсишь шаблон, а там {$50} парсер встречает это и пытается сделать <?=$50;?> |
В смысле если чувак вдруг прям в шаблоне решил написать текст {$50}?
При том, что знает что такой синтаксис предназначен для переменных и ему вылезит ошибка?
Ну если уж так приспичит, сделает спец символами.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Игорь_Vasinsky
25.11.2014 - 14:27
Цитата |
Там есть тег вроде специальный. |
Цитата |
$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
vagrand
Цитата |
У меня только один вопрос - зачем тему воскресили? Все обсуждение опять пошло по тому же сценарию, что и прошлых 5-ть страниц. Ничего нового. |
Так холивар же =)
Игорь_Vasinsky
Цитата |
ты удивишься) но работает - тока включить нужно в конфиге. |
Да, я знаю, но верстальщик не может менять конфиг, он только шаблоны верстает.
Да и смысл что то включать, если php на php сервере и так работает?
twin
Цитата |
Там есть тег вроде специальный. |
Вроде как в последних версиях выпилили.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Invis1ble, лол, я бы мог ответить, но зря ты мне вопрос не задал.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Цитата (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
25.11.2014 - 14:46
cheeпусть сначала он ответит :) но мне интересно и твое решение
Arhкейс - случай, реальный - часто встречающийся на практике (по крайней мере в моей архитектуре)
шаблон layout - родительский шаблон, обёртка своего рода
еще раз.
родитель:
<div class="parent"></div>
пример наследника:
<div class="child"></div>
есть множество наследников. Для каждого из них нужно назначить специфический класс в родителе.
Естественно, пример сильно упрощён. Я тут даже не касаюсь темы переопределения блоков.
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Invis1bleЯ понял, что не так понимал =)
Почитал про наследования и наткнулся на
http://habrahabr.ru/post/134421/Так что можно =) Правда не так красиво, хотя синтаксис твига красивым тоже не назовёшь.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Invis1ble
25.11.2014 - 15:26
за такие (ob_start() и пр.) вещи в шаблонах надо руки с корнем вырывать
не хватает еще каких-нибудь mysql_query туда влепить
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Вот так у меня работает =)
главный
<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
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.