У меня есть шаблон Усы, который включает в себя некоторые частичные. Я хочу загрузить частичное в строку в PHP с содержимым частичных элементов, включенных в строку. Но я не хочу, чтобы шаблон был разобран.
например, если у меня есть этот шаблон усов, myTemplate.mustache
:
{{> partials/myPartial }}
{{ my_text }}
а это partials/myPartial.mustache
:
{{ my_header }}
тогда я хочу загрузить myTemplate.mustache
и иметь переменную PHP, содержащую:
{{ my_header }}
{{ my_text }}
Я могу видеть, как получить содержимое шаблона с помощью new Mustache_Loader_Filesystem()->load()
но это не включает в себя содержание частичного.
Вы не можете увидеть способ сделать это, потому что это невозможно. Сам по себе усы никогда не имеют дело с шаблонами, слитыми вместе, поэтому нет никаких причин, по которым они могли бы получить API для их получения.
Из-за природы частичных операций это не так просто, как замена частичного тега содержимым этого шаблона. Например, партиалы не наследуют изменения разделителя и прагмы от шаблонов, которые их включают, поэтому их необходимо учитывать. Частицы также имеют отступ к уровню тега, который включает их, поэтому замена частичного тега содержимым частичного также должна сделать это.
Я предположил, что если вы действительно этого хотите, вы можете загрузить шаблон и партиалы, а затем использовать Mustache Tokenizer, чтобы найти теги партиалов в источнике шаблона, а затем заменить их (рекурсивно) содержимым соответствующих партиалов. Затем вам нужно будет выяснить, как изменить разделители в начале и в конце встроенных партиалов (или полностью запретить изменения разделителей, что можно сделать, вызвав исключение, если вы встретите одно при обработке анализируемого шаблона). И я не могу придумать способ удаления прагм после их добавления, поэтому вам придется либо запретить прагмы, либо убедиться, что все встроенные партиалы совместимы с теми прагмами, которые использовались в родительских шаблонах.
Это было бы довольно много работы, если не сказать больше.
Других решений пока нет …