Форум → Программирование → PHP для идиотов → Расширения PHP → Blitz template
Blitz template
Страницы: ← Предыдущая страница • Следующая страница →
-
Ноя. 26, 2010, 12:30 д.п., спустя 3 минуты 59 секунд
Абырвалг, gthtlfv pftcrtqgktye.Спустя 22 сек.заскейпленое передамСапожник без сапог -
Ноя. 26, 2010, 1:20 д.п., спустя 50 минут 10 секунд
даже эдво говорил,что эскейпить нужно во вьюхеСпустя 18 сек.только вьюха знает как нужно эскейпить -
Ноя. 26, 2010, 1:25 д.п., спустя 4 минуты 35 секунд
Абырвалг, )))
понарожали активных шаблонизаторов, от жира бесятся суки ЖВСапожник без сапог -
Ноя. 26, 2010, 11:41 д.п., спустя 10 часов 16 минут 46 секунд
Спустя 2 минуты 8 секунд добавил
Абырвалг
есть ли там автоэскейпинг?
Есть там функция escape. Можешь еще сам каких угодно функций написать.
Мне например не нравится всё эскейпить в шаблоне, да и в контроллере это запарно и промахнуться можно.
Но я просто parse() дополнил, чтобы он все переданные переменные экранировал рекурсивно. Исключение, те, которые начинаются с "html_" - там HTML-код, их экранировать нефиг. -
Ноя. 26, 2010, 12:10 п.п., спустя 28 минут 20 секунд
Моя стратегия такая :) когда пишешь шаблон, ты знаешь допустИм ли в этом месте вывод HTML или нет. Поэтому: если
{$var} выводит без эскейпинга, то
{@var} с эскейпингом.
Это синтаксис моего шаблона. Нет ничего проще, наглядней и правильнее! Это не то место, где надо выносить логику вовне. Ящитаю!ιιlllιlllι унц-унц -
Ноя. 26, 2010, 12:27 п.п., спустя 17 минут 38 секунд
+1, dudetpl так же умеет =)
Моя стратегия такая :) когда пишешь шаблон, ты знаешь допустИм ли в этом месте вывод HTML или нет. Поэтому: если
{$var} выводит без эскейпинга, то
{@var} с эскейпингом.
Это синтаксис моего шаблона. Нет ничего проще, наглядней и правильнее! Это не то место, где надо выносить логику вовне. Ящитаю!
только там вроде было [var](simple echo),[:var](htmlspecialchars), [::var](urlencode)Сапожник без сапог -
Ноя. 26, 2010, 12:31 п.п., спустя 3 минуты 53 секунды
Это не то место, где надо выносить логику вовне.
А это не логика )
Вот нужно вывести имя Вася, то просто в шаблоне {name}, а если Вася сменит имя на "Вася <script>…", это не дело шаблона и верстальщика ) -
Ноя. 26, 2010, 12:40 п.п., спустя 8 минут 35 секунд
это не дело шаблона и верстальщика
в большинстве случаев это дело автоэскейпинга по стратегии html.Спустя 39 сек.и маджента в шаблонах эскейпит руками. Эскейпить данные в контроллере и передавать в шаблон уже заэскейпенные - неправильно -
Ноя. 26, 2010, 12:50 п.п., спустя 9 минут 55 секунд
вот нашел ту тему http://pyha.ru/forum/topic/3746.15 -
Ноя. 26, 2010, 12:56 п.п., спустя 6 минут 44 секунды
Это значение - строка, в которой "foo\nddd". Как буш эскейпить?
Так и не понял до конца. Вот есть у меня строка в php:
$a = "foo\nddd";
Какой я должен результирующий JS получить скажи, и я скажу как это сделать в блитце?
По моему это зависит от того, что я потом хочу в JS с этой строкой сделать, скажем для alert-а надо одно, для document.write другое … -
Ноя. 26, 2010, 1 п.п., спустя 3 минуты 49 секунд
эу, не$a = 'foo\nddd';
а$a = "foo\nddd";
нужно получить такоеvar a= 'foo\nddd';
а не такоеvar a= 'foo
ddd';
в Twig это делается такvar a= '{{ a|e('js') }}';
-
Ноя. 26, 2010, 1:03 п.п., спустя 2 минуты 26 секунд
в Twig это делается так
ёбаный нахуй…Спустя 21 сек.это в шаблоне? -
Ноя. 26, 2010, 1:05 п.п., спустя 1 минуту 52 секунды
даСпустя 42 сек.a - имя переменной
|e - применение к этой переменной фильтра escape
('js') - стратегия эскейпинга -
Ноя. 26, 2010, 1:57 п.п., спустя 52 минуты 4 секунды
Теперь понял.
Чем хорош Blitz, что он гибок и настраивается под себя как душе угодно.
Итак, пишем расширение для эскейпирования в стиле JS (его можно написать один раз и на всю жизнь):
class MyBlitz extends Blitz
{
public function esjs($string, $symbols = "\n")
{
return addcslashes($string, $symbols);
}
}
$Blitz = new MyBlitz('test.tpl');
echo $Blitz->parse(array('string' => "foo\nddd"));
После чего используем в шаблоне:
<!– test.tpl –>
<script>
alert("{{ esjs($string) }}");
</script>
Вуаля … -
Ноя. 26, 2010, 1:59 п.п., спустя 2 минуты 7 секунд
Моя стратегия такова: почему верстальщика должно это ебать?
У него - есть строка, её надо вставить здесь.
Какие фильтры? Какие стратегии?
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!