|
0 Всего найдено: 1
ap4
Сообщение
05/12/2009 11:14
Копия темы
0
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). Но еще лучше было бы не плодить новый хак, а устранить саму причину, вызывающую необходимость этих плясок с бубном на ровном месте. Для этого достаточно было всего-навсего сменить дефолтный спецсимвол. |
Выразить восторг, поругаться или предложить что-нибудь можно на форуме |
Для обсуждения этого сервиса так же есть темы на фрилансе по поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал" |