t-alexashka
@t-alexashka
Сразу пишу legacy код

Как внести переменную Twig шаблона во внешний js ?

Здрасте! :)

Есть сайт, там переменные шаблонизатора twig подставляются прям в js на странице. примерно так:

alert( "{{ alrt_message }}" );

но нужно все скрипты закрыть от индексации, вынеся из в отдельные файлы и закрыв через robots

и разумеется во внешнем файле при генерации страницы вместо значения переменной будет сам текст
{{ alrt_message }}

подскажите решение как мне вынести из основного контента страницы скрипты с сохранением ф-ла twig'a

Спасибо.
  • Вопрос задан
  • 5443 просмотра
Решения вопроса 1
t-alexashka
@t-alexashka Автор вопроса
Сразу пишу legacy код
вообщем я уже придумал решение. Создать ф-ю на пхп, которая будет показывать в js формате все что в нее гетом передатут. Таким образом я без вызова скрипта подставлю в ссылку необходимые данные, а их загрузит браузер как будто это js.

<script src="/renderAllFromGet?var1=23&var2=hello" type="text/javascript"></script>


в итоге получю чтото вроде:

getdata = {
   var1:"23",
   var2:"hello"
}


как раз то что нужно - самих скриптов на странице не будет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@JoyMefisto
Frontend developer
{% set protected_fields = protected_route_info(protectedRoute, [], true).code %} {# получаем переменную в twig #}


<script> // и пробрасываем её в script
    (function () {
        let protectedFields = {{ protected_fields|json_encode|raw  }};

        console.dir(protectedFields);
    })();
</script>
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
А при чем тут индексация, robots.txt и внешние js файлы?
Ответ написан
@YEASTOR
Во внешнем файле должна быть функция, которая принимает параметры. В twig вызываете эту функцию.
twig
alertMessage("{{ alrt_message }}")
.js
function alertMessage(message){
   alert(message);
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы