Поисковая форма:) поиск по free-lance.ru Топ/история/обновления фриланса, по разным параметрам (темы, сообщения, пользователи...) Автоматическое удаление постов от ненужных юзеров в топике (php скрипт) Досье(точный ник)
 

Ник (или часть ника):
?
Какой текст ищем:
?
Раздел блогов:
За срок
дней
Тип поиска: (по вхождению: по тексту гуг выдаст посты с "гуг", "гугл", "огугл"; "полнотекстовый": по тексту "гуг" выдаст посты только с "гуг")
По вхождению строки:  Полнотекстовый: 
(поиск не 100% актуальный, есть определённая задержка при обновлении данных для поиска. )
0 Всего найдено: 1
ap4 Сообщение 05/12/2009 11:14 Копия темы
Smarty dumbasses – как на кривое решение наложить еще более кривой патч В новой версии smarty пацаны додумались до важной фичи. Теперь, если smarty встречает фигурные скобки в обрамлении пробелов, их содержимое больше не трактуется как тэги. То есть, если раньше в шаблоне встречался текст с фигурными скобками (например, javascript), его нужно было, по замыслу авторов smarty, оборачивать в специальные тэги ...{/literal}. А теперь – не нужно. Клево?

Да нет, не клево. Тупо, до безобразия тупо.

Изначально проблема заключалась в неправильном выборе спецсимвола, открывающего тэг. Авторы smarty почему-то решили, что самым подходящим для этого символом будет фигурная скобка. О такой мелочи как javascript – никто, конечно, не задумывался.

Когда выяснилось, что фигурная скобка в качестве спецсимвола порождает проблемы, было придумано решение – оборачивать текст шаблона, содержащий фигурные скобки, в специальные тэги ...{/literal}. В тексте внутри этих тэгов фигурная скобка перестает играть роль спецсимвола.

Других слов, кроме как "кривой хак", я для подобного решения подобрать не могу. Вместо устранения причины – выбора неконфликтующего признака открытия тэга – пользователям предложили неудобную подпорку.

А между тем, smarty позволяет решить проблему просто и элегантно – переопределением служебного символа. Вместо фигурной скобки можно назначить другую последовательность символов в качестве признака открытия и закрытия тэга smarty. Например, "{%" и "%}". Тем самым устраняется причина конфликта, и полностью отпадает необходимость в использовании . Текст шаблона становится чище и семантически яснее.

Делается это так:
$smarty->left_delimiter = "{%";
$smarty->right_delimiter = "%}";

И вот теперь, в третьей версии, люди специально помучались и написали еще один хак. Теперь умный smarty не будет трактовать фигурную скобку как начало тэга, если она обрамлена пробелами!

А между тем, отделение спецсимволов пробелами позволяет быстрее читать код, и, как следствие, затрачивать меньше усилий при содании и модификации шаблонов. Я, например, постоянно пишу что-то вроде: {% if $active %} ... {% else %} ... {% /if %}

И вот теперь такой подарок в новой долгожданной версии smarty. Хорошо, хоть сделали эту фичу отключаемой (для этого надо сказать $smarty->auto_literal = false). Но еще лучше было бы не плодить новый хак, а устранить саму причину, вызывающую необходимость этих плясок с бубном на ровном месте. Для этого достаточно было всего-навсего сменить дефолтный спецсимвол.
0

©2008 edogs egods
Выразить восторг, поругаться
или предложить что-нибудь можно на форуме
Для обсуждения этого сервиса так же есть темы на фрилансе по
поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал"