blitz templates - теперь на sf.net

Develar

Новичок
>> и для iterate такой параметр ЕСТЬ
вроде слежу за release note, а когда ввели?

>> а доку надо тщательно отсматривать и переписывать
мне очень стыдно, постараюсь к середине февраля обновить
 

fisher

накатила суть
>>вроде слежу за release note, а когда ввели?
ой давно с 0.4.23
.. use an additional non-empty parameter "iterate_nonexistant" (TRUE, 1, 'Yes' - whatever) in parent "iterate" or "block" calls

>>мне очень стыдно, постараюсь к середине февраля обновить
стыд тут непричём, я сам виноват. апи надо с исходниками аккуратно сверить. думаю, я мог бы сначала сделать это для английской версии
 

EugeneVC

Новичок
в smarty пишем
{$VAL}
{literal}
<script></script> -- тут ничего не парсится
{/literal}

в blitz так не получается
 

fixxxer

К.О.
Партнер клуба
аналога literal в blitz нет. собственно этому я вижу две причины
1 - использование двойных скобок по умолчанию
2 - обычно js/css выносятся в отдельный файл

и признаться я не очень понимаю, чем одинарные скобки лучше двойных =)
 

EugeneVC

Новичок
>>2 - обычно js/css выносятся в отдельный файл
после отладки - да
просто иногда кеш забываю чистить))

одинарные кавычки просто сила привычки + облегчает переход со smarty
 

Develar

Новичок
я использую одинарные фигурные скобки, а для решения проблемы регулярных выражений в SQL или когда js/css никак не вынести в отдельный файл ввел методы openBrace/closeBrace. лениво писать/читать двойные когда одинарные редко где мешают.
 

fisher

накатила суть
http://sourceforge.net/project/showfiles.php?group_id=188147&package_id=219988&release_id=580379
===================================================================================================
0.5.11 version 28 Feb 2008
===================================================================================================
fixed bugs:
- dynamic included file contexts do not parse (ticket #112)
- cannot successfully load php string from blitz subclass (ticket #111)
- including template with filename as name of variable {{ include($var) }} (ticket #104)
- string variables '0' or "0" are not false (ticket #99)
- unzipped source should be blitz-[$VERSION], not blitz (ticket #106)
 

morfi

Новичок
А поддержка __get планируется? Очень не хватает.
Например с __call получилось очень удобно можно регистрировать функции:
PHP:
   class Template extends Blitz {
    public function __call($name, $row) {
        if (!empty(self::$functions[$name])) {
            return call_user_func_array(self::$functions[$name], $row);
        } else {
            throw new systemException("Вызов не существующей функции: ".$name);
        }
    }
    
    public static function addFunction($name, $call) {
        self::$functions[$name] = $call;
    }
  }


  class Users {
      
    public function __construct() {
        Template::addFunction('getNameUser', array($this, 'getName'))
    }

    public function getName() {
         return $this->name;
   }
  }
Потом в шаблоне:
Здравствуйте {{ getNameUser() }}.

С __get тоже было бы удобно.
 

crocodile2u

http://vbolshov.org.ru
morfi
О, кстати, хорошая идея!

$MyBlitzExtension->my_func вернет, допустим, массив - мы этот массив тово - в блок засунем. Получается активный шаблон. Не знаю, правда, пойдут ли на это разработчики - ведь это дополнение как бы может разрушить идею, на которой построен блитц - простота и никаких "активных" шаблонов...
 

morfi

Новичок
__get было бы удобно использовать в BEGIN например:
{{ BEGIN func_isAuth }}
Здравствуйте {{ getUserName() }}
{{ END }}

А вообще лучше чтобы добавили if, например:
{{ IF $isAuth }}
Здравствуйте {{ getUserName() }}
{{ ELSE }}
Здравствуйте Гость
{{ END }}

Это наверное единственное чего не хватает этому шаблонизатору.
 

Develar

Новичок
morfi
давайте верстальщик займется своим делом ;)? В сложных шаблонах вот эта свобода мешает потом поддерживать эту макаронину.
 

morfi

Новичок
Develar
Вас никто не заставляет это использовать в своих проектах, но просто в некоторых ситуациях это самое удобное решение.
 

Develar

Новичок
morfi
Просто зачастую получается, что потом это перерастает в ммм... но __call я использую, и знаете ли об этом патче http://alexeyrybak.com/blitz/bt/view.php?id=100 ?
 

morfi

Новичок
Главное следить за тем чтобы не перерастало.....
О патче не знал.
 

fixxxer

К.О.
Партнер клуба
этот патч - скорее предложение функционала, чем то, что можно использовать в production ;)
 

fisher

накатила суть
>>А вообще лучше чтобы добавили if, например
согласен, и есть такой тикет. но куча дел, просто руки не доходят до blitz.
все тикеты собраны тут добавляйте есличо
http://alexeyrybak.com/blitz/bt/my_view_page.php
 

morfi

Новичок
Почему нельзя передать массив в функцию? :)
{{ myFunc() }} работает
а {{ myFunc(array(1)) }} вызывает: SYNTAX ERROR: invalid method call

А нет, просто нельзя так: {{func1(func2())}}, поэтому и на array ругается.
 

fixxxer

К.О.
Партнер клуба
если у тебя в переменной $a массив, то {{ func($a) }} и все передастся прекрасно.

а перечисленным языковым конструкциям не место в шаблоне ;)
 

fisher

накатила суть
0.6.1 with milti-line IF/UNLESS blocks!

Стартанул новую ветку, 0.6, куда буду добавлять всякие совсем новые фичи, которые просят юзеры. В 0.6.1 решился-таки на очередное расширение логики в шаблонах - спасибо за предложение Фиксеру, получилось довольно "легкое" по синтаксису решение. Теперь чтоб сделать простым использование header/footer/empty паттерна для спиcков можно юзать многострочные IF/UNLESS блоки:
{{ IF list }}
<table>
{{ BEGIN list }}
<tr><td>{{ $some }}</td></tr>
{{ END }}
</table>
{{ END }}
{{ UNLESS list }}
Fuck it, Dude, let's go bowling
{{ END }}

Также фича будет полезной просто для больших кусков HTML, которые не хочется класть в блок и итерировать из кода.

На очереди плагины, наверное.
 
Сверху