В настоящее время я разрабатываю веб-приложение с использованием Symfony 2.1.0.
Я прочитал главу о шаблоне книги, и я пытаюсь включить в свои веб-страницы активы (прямо сейчас, это всего лишь одна таблица стилей).
Я использую трехуровневую систему наследования, которая упоминается в книге, и моя структура приложения в настоящее время выглядит следующим образом:
Как вы можете видеть, я поместил таблицу стилей в свой комплект. Я не знаю, является ли это хорошей практикой или нет.
Теперь, в layout.html я добавил следующее:
{% block stylesheets %} {{ parent() }} <link rel="stylesheet" type="text/css" href="{{ asset('css/main.css)' }}" /> {% endblock %}
Но asset('css/main.css')
просто связывается с /css/main.css
, тогда как ./app/console assets:install
устанавливает активы в web/bundles/mypagebundle/
. Мне не нравится тот факт, что таким образом имя моего пакета будет общедоступным (что может заставить пользователей заподозрить, что я использую Symfony, и мне нравится поддерживать внутренности моей веб-страницы, ну, внутреннюю). Можно ли изменить каталог, в котором assets:install
будет устанавливать активы? Мне кажется утомительным, чтобы вручную устанавливать активы в сети /.
Я также думаю об использовании Assetic для управления активами, поскольку мне лично нравится возможность автоматически минимизировать мои сценарии / таблицы стилей и хранить их все вместе в одном файле. Тем не менее, я слышал, что это невозможно, если вы включаете таблицы стилей на разных уровнях, то есть они не будут работать с трехуровневой системой наследования. Можно ли обойти это? Кроме того, будет ли использование Assetic позволять мне скрывать имя моего пакета от общественности?
Использование assetic будет решать все ваши проблемы.
Я слышал, что это невозможно, если вы включаете таблицы стилей на разных уровнях, то есть они не будут работать с трехуровневой системой наследования
Вы можете, но он будет генерировать css-файл для каждого уровня (точно так же, как с активом (), на самом деле).
Пример:
расположение:
{% block stylesheets %} {{ parent() }} {% stylesheets 'main.css' %} <link rel="stylesheet" type="text/css" href="{{ asset_url }}" /> {% endstylesheets %} {% endblock %}
суб-шаблон:
{% block stylesheets %} {{ parent() }} {% stylesheets 'sub.css' %} <link rel="stylesheet" type="text/css" href="{{ asset_url }}" /> {% endstylesheets %} {% endblock %}
результат:
<link rel="stylesheet" type="text/css" href="..." /> <link rel="stylesheet" type="text/css" href="..." />
В качестве альтернативы подшаблон может полностью переопределить блок таблиц стилей, так что создается только одна таблица стилей (но она менее сухая):
{% block stylesheets %} {% stylesheets 'main.css' 'sub.css' %} <link rel="stylesheet" type="text/css" href="{{ asset_url }}" /> {% endstylesheets %} {% endblock %}
результат (в производстве / без отладки):
<link rel="stylesheet" type="text/css" href="..." />