Smarty + display filter

pdla

Guest
Smarty + display filter

Вообщем есть меня зарегистрированные фильтры вывода (display filters) но я почему то думал, что данный фильтр должен срабатыать, только тогда когда мы вызываем display, а он срабатывает и тогда когда мы делаем fetch. Не кажется ли общественности данное поведение глупым ???
 

Demiurg

Guest
fetch от display отличается только тем, что один кладет результат в переменную, а другой выводит результат. Посмотри реализацию display.
 

pdla

Guest
Автор оригинала: Demiurg
fetch от display отличается только тем, что один кладет результат в переменную, а другой выводит результат. Посмотри реализацию display.
Я смотрел код, но факт остается фактом, в случае fetch мне кажется, что фильтры вывода применять не нужно. Я хотел спросить мнения людей, что бы сделать patch и отослать разработчику, просто может быть такое что это нужно только мне. Так же я считаю это не нужным по следущим причинам.

Допустим есть мастер шаблон в котором три поля, жти поля в свою очередь являются шаблонами.

Итак имеем:

PHP:
$Smarty->assign('top',$Smarty->fetch('tpl1.html'));
$Smarty->assign('left',$Smarty->fetch('tpl2.html'));
$Smarty->assign('right',$Smarty->fetch('tpl3.html'));

$Smarty->display('main.html'));
Что мы имеем сналача через фильтры проходять шаблоны
tpl1..3 а потом они же но в составе main.html
то есть получается двойная работа.

Вы можете возразить - ПОЛЬЗУЙ include в smarty, но это не очень удобно, так как часто возникают ситуации такого плана:

PHP:
switch($_GET['t']){
      case 'a':
          $Smarty->assign('top',$Smarty->fetch('tpl1.a.html'));
      break;
      case 'b':
          $Smarty->assign('top',$Smarty->fetch('tpl1.b.html'));
      break;
      (...)
}
Если это реализовывать не средствами PHP а средствами шаблонов, то это мартышкин труд, просто посмотре как работает парсинг тегов в смарти. А потом подумайте что будет если обращейний к сайту будет больше X, вообщем это просто трата ресурсов сервера.

PS: Готов выслушать конструктивную критику!
 

Demiurg

Guest
а вот это уже не правильно. ты в смарти передаешь не данные и их представление. Лучше передовать главному шаблону имена шаблонов, которые надо инклюдить, тогда таких проблем не возникнет.
 

pdla

Guest
Автор оригинала: Demiurg
а вот это уже не правильно. ты в смарти передаешь не данные и их представление. Лучше передовать главному шаблону имена шаблонов, которые надо инклюдить, тогда таких проблем не возникнет.
Возможно это выход, но по идеологии даже по названию (display) мне кажется фильт должен срабатывать только при выводе, а не на промежуточных обработках.
 

Demiurg

Guest
по идеологии display от fetch ничем отличаться не должны.
display - это вывод, fetch вытаскивание в переменную, например для записи в файл.

мне кажется, что тебя путает название "display filters".
 

Мутник

Новичок
Demiurg

можешь пояснить, чем приведенный автором топика пример не очень хорош?
 

Demiurg

Guest
Мутник
тем, что с пришедшем html смарти уже ничего сделать не сможет
 
Сверху