Или операторный эквивалент с использованием mustache.js - PullRequest
8 голосов
/ 16 марта 2012

Хорошо, я знаю, что в шаблонах усов нет логики, но как мне это реализовать:

<?php
  if ($a || $b) {
    echo $c, $d, $e;
  }
?>

... используя синтаксис шаблона усов?Лучшее, что я могу придумать, это:

{{#a}}
  {{c}}{{d}}{{e}}
{{/a}}
{{^#a}}
  {{#b}}
    {{c}}{{d}}{{e}}
  {{/b}}
{{/a}}

... что явно отвратительно и требует, чтобы я дублировал что-либо внутри «если».

Ответы [ 2 ]

9 голосов
/ 19 марта 2012

Усы прямо запрещают подобные вещи. Это логика, и вы пытаетесь поместить ее в свой шаблон:)

Подходящим способом было бы переместить логику в объект ViewModel или View:

<?php
class MyView {
    public $a;
    public $b;
    public function aOrB() {
        return $this->a || $this->b;
    }
}

Но если бы это был я, я бы назвал эту функцию примерно как hasFoo или showBar, поэтому она имеет немного семантического значения.

Потому что вы обрабатываете "я должен показать этот блок?" логика в вашем View или ViewModel, вы вернулись к обычному разделу в вашем шаблоне:

{{#aOrB}}
  {{c}}{{d}}{{e}}
{{/aOrB}}
0 голосов
/ 06 марта 2015

Для справки, это единственный способ сделать это с усами. На данный момент (усы 5, я полагаю) лучшего решения нет.

...