Усы php space в шаблонах

У меня есть этот код шаблона:

{{#album}}
<h1>{{ hinfo.artist_name }}</h1>
<h2>{{ hinfo.name }}</h2>
{{/album}}

который оказывает:

<h1></h1><h2></h2>

Вместо этого, если я напишу:

{{#album}}
<h1>{{hinfo.artist_name}}</h1>
<h2>{{hinfo.name}}</h2>    
{{/album}}

это успешно показывает:

<h1>my artist</h1><h2>my album name</h2>

В javascript-версии той же библиотеки такого поведения с пробелами не происходит. Я добавил функцию помощник в конструктор php:

$mustache = new Mustache_Engine( 
    array( 
        'loader' => new Mustache_Loader_FilesystemLoader( 
            self::$_dir, 
            array('extension' => '.mst') 
        ),
        /*
        'helpers' => array(
            'fn' => function($text, $render) {
                        $parsed = $render($text);
                        $date = date("F j, Y  h:i", (int) $parsed);
                        return $date;
                    }
        )*/
    )
);

но не выполняется в этом примере.

Может кто-нибудь сказать мне, если это поведение правильно или это ошибка в версии усов 2.10?

2 ответа

Решение

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

В Mustache.php, {{hinfo.artist_name}} (без пробелов) правильный синтаксис.

В Mustache.js, {{ hinfo.artist_name }} (с пробелами) правильный синтаксис.

Mustache.php поддерживает все имена тегов с пробелами в начале и конце или без них. Например, это именно то, что вы ожидаете:

<?php

require __DIR__ . '/vendor/autoload.php';

$m = new Mustache_Engine();

$tpl = <<<EOS
{{#album}}
<h1>{{ hinfo.artist_name }}</h1>
<h2>{{ hinfo.name }}</h2>
{{/album}}
EOS;

$tpl2 = <<<EOS
{{# album }}
<h1>{{ hinfo.artist_name }}</h1>
<h2>{{ hinfo.name }}</h2>
{{/ album }}
EOS;

$data = [
  'album' => [
    'hinfo' => [
      'artist_name' => 'my artist',
      'name' => 'my album name',
    ]
  ]
];

echo $m->render($tpl, $data);
echo $m->render($tpl2, $data);

assert($m->render($tpl, $data) === $m->render($tpl2, $data));

Выходные данные двух шаблонов идентичны.

Если это не то, что вы видите, предоставьте полный тестовый пример, и мы могли бы его отследить:)

Другие вопросы по тегам