Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 06.08.2015 14:38:17

Покритикуйте решение. Шаблоны договоров.

Есть нужда реализовать механизм заполнения договоров на основе типового шаблона.

Я вижу это так.
В БД делаю таблицу Вид_Договоров. Каждый вид имеет шаблон с текстовым полем: наполнение и спец ключи для вставки параметров.
Например: Настоящий договор заключен между [Org name] далее Продавец и [Partner name] далее Покупатель. Сумма договора: [text_area 1]. Срок договора [combo_box 1]. Примечание [text_area 2]... и т.д.

При создании нового договора выбирается вид договора и читается из БД соответствующий шаблон. Шаблон парсится на текст и параметры. Текст отображается пользователю без возможности редактирования, параметры выбираются-заполняются пользователем. Дальше договор на печать и в БД.

Буду рад советам /критике /ссылкам на что-то похожее.

Не в сети

#2 11.08.2015 21:33:48

Re: Покритикуйте решение. Шаблоны договоров.

Ваша схема вполне логична, не вижу здесь никаких сложностей. Я бы сделал простой шаблонизатор, наподобие описанного вами — на входе текст с [заглушками], каждая заглушка задаёт имя поля и его тип (select, text, email и пр.) + какие-то дополнительные поля по необходимости. На выходе получается HTML-форма, с текстом и вставленными внутри input’ами, select’ами и прочим. Шаблон хранить можно хоть в текстовом файле.

При заполнении формы в БД сохраняются только поля, можно это делать через serialize(), можно через json_encode(). Имя поля = значение. Здесь шаблонизатор вместо подстановки вместо заглушек HTML-кода подставляет текстовые значения. В итоге получается форма.

Единственное, что вам надо продумать — как совмещать старые введённые формы с новыми, то есть если у вас изменяется шаблон договора (это 100% будет, рано или поздно). Я бы сделал так, что при изменении шаблона не редактируется текущий, а создается его копия. Копии можно помечать в БД каким-то единым именем (типа «то_некое_соглашение»), которое не меняется для копий, и по которому можно найти последнюю (новую) версию данного шаблона для вывода для новых форм. А старые формы выводить старыми шаблонами.

Можно вместо этого держать всегда только единственную версию шаблона и делать пропущенные поля пустыми, но это очень хрупкая система и почти наверняка её придётся менять, что в процессе будет сделать сложно.

Не в сети

#3 12.08.2015 06:44:03

Re: Покритикуйте решение. Шаблоны договоров.

Я бы сделал так:

Первая таблиц: ConctractTemplates:
id, contract_name, contract_template

Вторая таблица: ContractsData:
id, contract_id, contract_var, contract_val, contract_date

В первой таблице - шаблоны договоров, во второй таблице - сохраненные данные.

Возможно, у вас так и есть. А если появится новый вариант договора, то в первую таблицу его записать как новый договор.

Не в сети

Подвал раздела