Я использую Laravel, и все мои шаблоны используют шаблоны Blade. Есть несколько частей страниц, которые должны отображаться как на стороне сервера, так и с помощью JavaScript. Для этого я использую шаблоны усов (с усики-l4).
Проблема в том, как заставить Laravel визуализировать шаблоны, а также включить их на страницу с неповрежденными тегами Усов, чтобы JS мог их подобрать.
Например, если у меня есть (упрощенный пример) шаблон Blade, как это:
<html>
<head></head>
<body>
<h1>{{ $pageTitle }}</h1>
@include('partials/'.$partialName, array('some_text' => $pageText))
<script type="text/mustache">
@include('partials/'.$partialName)
</script>
</body>
</html>
который включает в себя .mustache
частичные, как это:
{{#some_text}}
<p>{{some_text}}</p>
{{/some_text}}
Частично усатый отображается на странице загрузки нормально. НО когда он включен между <script></script>
теги, я хочу, чтобы это было предоставлено дословно. то есть {{#some_text}}
Теги усов должны присутствовать в отображаемом HTML. Затем JavaScript может читать его как шаблон усов.
Я вижу, что это возможно изменение разделителей тегов в шаблонах на стороне сервера (Blade) но на данном этапе, когда уже работает множество шаблонов Blade, я бы предпочел этого не делать.
Я не могу понять, как это сделать. Могу ли я изменить разделители усов только один раз, когда он включен, так что тогда он будет полностью обработан?
Другим способом было бы избежать тегов с @
<div>@{{ $str }}</div>
<div>@{{"<a>Plain text</a>"}}</div>
приведет к
<div>{{ $str }}</div>
<div>{{"<a>Plain text</a>"}}</div>
Один из способов сделать это — изменить тег содержимого blade-сервера.
Вот так :
Blade::setContentTags('[%', '%]');
Так что теги {{}} будут считаться простой строкой.
Для получения дополнительной информации обратитесь к этому фрагменту:
Laravel-рецепты