2015-01-22 4 views
-2

Может кто-нибудь объяснить мне, что делают эти команды «tal» в моих тегах html? Я узнал, что они являются командами языка текстовых атрибутов, но не ясно, что они делают.Что делают команды tal: xxx?

<div tal:condition="myvar"> 
Your command returns:<br><tal:block tal:content="myvar"></tal:block> 
</div> 

Оценивают ли они условия? или заполнители? Пожалуйста, объясни.

+0

Вы уже отметили свой вопрос связанными тегами; возможно, вы пробовали читать документацию TAL? Что вы знаете и что не знаете? Как далеко назад мы должны пойти с объяснением? – deceze

ответ

1

Вы, вероятно, надеюсь, знакомы с "традиционными" языками шаблонных, которые выглядят примерно так:

<?php if ($myvar) : ?> 
    <div> 
    Your command returns:<br><?php echo $myvar; ?> 
    </div> 
<?php endif; ?> 

или:

{% if myvar %} 
    <div> 
    Your command returns:<br>{{ myvar }} 
    </div> 
{% endif %} 

или подобные вариации этого синтаксиса. Эти языки просто выводят текст и предлагают определенные структуры управления, не более того, не что иное.

TAL is HTML-код, он использует синтаксис HTML как часть собственного синтаксиса.

<div tal:condition="myvar"> 
    Your command returns:<br><tal:block tal:content="myvar"></tal:block> 
</div> 

Он анализирует HTML так же, как браузер, и использует атрибуты элементов HTML для изменения шаблона. В приведенном выше примере весь div будет отображаться или удаляться в зависимости от значения myvar. Он делает то же самое, что и два других примера выше.

Преимущество имеет два аспекта:

  1. Вы гарантированно будет производить 100% выход действует HTML, так как сама система шаблонный требует действительного HTML, является HTML осведомленными и будет производить гарантированно хороший выход. «Традиционные» языки шаблонов - это, по сути, просто конкатенация строк, что открывает вам всевозможные синтаксические проблемы. TAL работает на абстрактном уровне DOM, то же самое делает браузер.
  2. Ваш шаблон является «просто HTML» в любое время, поэтому вы можете работать с ним, не требуя PHP или любого другого процессора шаблонов. Дизайнер интерфейсов может конструировать и кодировать шаблон полностью независимо от любого бэкэнд, а затем передать готовый код разработчику бэкэнд, который подключит его к остальной части кода.
+0

Привет, спасибо за объяснение. Не могли бы вы дать мне более подробное объяснение того, что тал: состояние и тал: контент? Возможно, вы поняли, что я просто пытаюсь использовать tal в качестве заполнителя для переменной. В этом случае, почему я должен использовать теги условия и содержимого? http://www.owlfish.com/software/simpleTAL/tal-guide.html. Я пошел по этой ссылке, но я, похоже, не получил очко – Tania

+0

Честно говоря, я не уверен, что вы не понимаете о * «Если выражение оценивается как true, тогда будет выведен этот тег и все его дети. выражение оценивается как false, тогда этот тег и все его дочерние элементы не будут включены в вывод. "* – deceze

+0

Что касается' tal: block', это, по сути, местозаполнитель; см. http://phptal.org/manual/en/split/phptal-blocks.html. Сам тег '' не будет выводиться, но все, что будет делать TAL на основе других атрибутов, будет выполнено. В приведенном выше примере весь элемент '' будет заменен * на 'myvar'. – deceze