Как организовать шаблоны в Symfony

У меня есть сборка приложения с Symfony 3.3 и Twig, которая будет распространена среди большего количества клиентов. Я использую parameters.yml для настройки его поведения, и, похоже, он работает хорошо.

У меня есть проблема с twig шаблонами: хотя клиенты будут использовать большинство шаблонов как есть, им нужно будет настроить некоторые части, такие как стили CSS, общий макет и время от времени переопределять дизайн.

Варианты, которые я определил, следующие:

  1. Имейте полный набор шаблонов для каждого клиента. Проблема в том, что обновления будут кошмаром, так как мы должны исправлять каждый шаблон и учитывать различия.
  2. Настройте шаблоны с помощью файлов YML. Проблема в том, что вскоре он становится слишком сложным, а количество параметров потенциально огромным.
  3. Предоставьте набор шаблонов в app/Resources/views и разрешите клиенту переопределить любой из шаблонов, создав другой файл с тем же именем в другой папке.
  4. Предоставьте набор шаблонов в AppBundle/Resources/views и позвольте клиентам изменить их в app/Resources/views
  5. Создайте приложение как пакет Symfony (например, MyAppBundle) и разверните приложение для каждого клиента, включив MyAppBundle через composer. Мне очень нравится это решение, но я не знаю, легко ли его реализовать.

Есть ли у вас какие-либо предложения о том, как подойти к этой проблеме?


person user3429660    schedule 28.06.2017    source источник


Ответы (1)


Я думаю, что в вашем случае лучше всего подумать об основных частях и частях клиента, а затем построить блоки и перезаписать все части, которые имеют отношение к клиенту, например, CSS или что-то еще. Если вы знаете, что есть специальные части, вы можете, например, создавать макросы.

С концепцией блока вы можете предопределить шаблон, но у клиента есть возможность перезаписать ту часть, которую вы определили, своей собственной.

С Twig у вас есть много возможностей решить такую ​​проблему.

Drupal 8 использует эту концепцию Theming.

https://www.chapterthree.com/blog/twig-concepts-drupal-8-themes-part-ii

Возможно, вы можете посмотреть, как они решили эту проблему, и вы сможете найти хорошее решение для своей проблемы.

person René Höhle    schedule 28.06.2017