Задать вопрос
@vdsp

Знаете ли вы какие-либо методы шаблонизации документов?

Допустим в БД хранится шаблон и данные. В шаблоне мне нужно сделать какую-то разметку, чтобы подставлять данные. Например вместо %NAME% подставить user_name. Т.е. взять из таблицы users поле name. Но мне придется для этого сделать запрос и сделать замену. Есть ли какие-либо готовые решения или код с github, для того чтобы подстановка осуществлялась автоматически?
Приведу пример: шаблон создает пользователь, вставляет %NAME% - автоматом подставляется user.name, как вариант использовать %ТАБЛИЦА.ПОЛЕ% и id записи. Но может быть есть более интересные решения или идеи.
У меня плохо получается задавать вопросы. Еще пример, написал я %NAME% - как программа узнает, что это user.name? Я не могу специально прописать в коде замену %NAME% на user.name, т.к. может появится поле которого сейчас не существует или таблица, меня интересует глобальный алгоритм сопоставления данных, некий анализатор переменных. Т.е. чтобы кто-либо написал в шаблоне %ЧТО УГОДНО% - и данные подставились из таблицы. Сделать это можно как я уже говорил таким образом: %ТАБЛИЦА.ПОЛЕ%, можно еще строить атрибутную модель и хранить данные вертикально. Но я хочу узнать как делают другие, может есть более оригинальные способы.
  • Вопрос задан
  • 185 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Есть ли какие-либо готовые решения или код с github
Кажется, я понял, для чего создан github)))))

Ну так Вы делайте в 3 этапа:
1. Получаете массив всех переменных шаблона
2. Получаете все значения переменных для этого массива
3. Делайте замену через функцию-обработчик.
Ответ написан
%NAME% подставить user_name

Так и делают с помощью str_replace например

Есть ещё вариант с eval но он сложнее, не такой очевидный.

Но мне придется для этого сделать запрос

Можете запись из базы разбить implode надвое, показать [0] потом переменную $name потом [1] после неё, тогда замену не придётся делать ))
А запрос так и так придётся делать, его можно сделать сразу вместе с запросом этой записи.
Ответ написан
miraage
@miraage
Старый прогер
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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