Наличие шаблонов усов как для рендеринга, так и нет, с Laravel / Blade и JavaScript

Я использую 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, я бы предпочел этого не делать.

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

0

Решение

Другим способом было бы избежать тегов с @

<div>@{{ $str }}</div>
<div>@{{"<a>Plain text</a>"}}</div>

приведет к

<div>{{ $str }}</div>
<div>{{"<a>Plain text</a>"}}</div>

StackOverflow Ответ

5

Другие решения

Один из способов сделать это — изменить тег содержимого blade-сервера.
Вот так :

Blade::setContentTags('[%', '%]');

Так что теги {{}} будут считаться простой строкой.
Для получения дополнительной информации обратитесь к этому фрагменту:
Laravel-рецепты

1

По вопросам рекламы [email protected]