У меня вопрос о том, как отделить файл javascript с указанием загрузки от файла ветки шаблона.
У меня есть, например, admin.html.twig, который расширяет base.html.twig, в базе я получил
{% block javascripts %}
<script src = "/assets/js/core/jquery.min.js"></script>
<script src = "/assets/js/core/popper.min.js"></script>
<script src = "/assets/js/core/bootstrap-material-design.min.js"></script>
<script src = "/assets/js/plugins/perfect-scrollbar.jquery.min.js"></script>
<script async defer src = "https://buttons.github.io/buttons.j"></script>
<script src = "/assets/js/plugins/chartist.min.js"></script>
<script src = "/assets/js/plugins/bootstrap-notify.js"></script>
<script src = "/assets/js/material-dashboard.min.js"></script>
<script src = "/assets/demo/jquery.sharrre.js"></script>
<script src = "/assets/js/sparkline.js"></script>
<script src = "/assets/js/plugins/chartjs.min.js"></script>
{% endblock %}
и у меня есть следующий файл, например dashboard.html.twig, который расширяет файл admin.html.twig, и мой вопрос в том, что в файле dashboard.html.twig я получил небольшой написанный самим собой небольшой код javascript, и этот javascript из Конечно, используйте библиотеку jquery, но эту библиотеку я загрузил в файл base.html.twig, следующий из моего самописного скрипта, который находится в dashboard.html.twig.
Мой вопрос в том, как я могу, например, загрузить свой небольшой код javascript (конечно, я могу сохранить его в отдельном файле, например mycode.js), но как загружать только тогда, когда этот маршрут файла dashboard.html.twig я использовал, и после jquery загружается? Потому что в других маршрутизаторах я dont need this mycode.js so I dont хочу поместить его в файл base.html.twig в блоке javascript, есть идея?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если dashboard напрямую расширяет admin, то вы можете сделать следующее, чтобы гарантировать загрузку всех скриптов администратора и добавить специфический скрипт dashboard:
{% extends "admin.html.twig" %}
{% block javascripts %}
{{ parent() }} {# execute the parent block, thus loading all scripts in admin #}
<script src = "/assets/js/dashboard/mycode.js"></script>
{% endblock %}
Можно нырять
{% extends "admin.html.twig" %} {# use only in case your all templates are at the same places like app/Resources/views/admin.html.twig #}
{% block javascripts %}
{{ parent() }} {# loads the parent javascript block, from the template you are extending in first line. #}
<script src = "/assets/js/dashboard/code.js"></script>
{% endblock %}
если вы пытаетесь расширить шаблон из другого пакета, вы можете использовать этот
{% extends "YourBundleName:Default:admin.html.twig" %} {# YourControllerRelativeName just in case your view structure is like views/Default/admin.html.twig#}
{% block javascripts %}
{{ parent() }} {# loads the parent javascript block, from the template you are extending in first line. #}
<script src = "/assets/js/dashboard/code.js"></script>
{% endblock %}
для лучшего понимания вам следует здесь немного прочитать: https://symfony.com/doc/2.8/templating.html Примечание: - в документах вы должны изменить версию в соответствии с вашей текущей версией.
Я бы предложил следующее решение.
Объявите следующий блок в base.html.twig после {% block javascripts %}{% endblock %}
{% block javascript_page %}{# specific code for current page #}{% endblock %}
Затем на своей странице вы можете включить скрипты для конкретной страницы.
{% extends "admin.html.twig" %} или {% extends "base.html.twig" %}
{% block javascript_page %}
<script src = "/assets/js/pages/my_page.js"></script>
{% endblock %}
Хотя ответ DarkBee также верен, но таким образом вам не нужно беспокоиться о вызове {{ parent() }} на каждой странице.
Спасибо за все ответы! отлично, да, мне нужно прочитать о ветке шаблонов
На мой взгляд, чтобы помочь другим, вопрос мог бы быть следующим:
How to separate page specific JavaScripts files in symfony4 twig templates?Спасибо!