CodeWriteson Çok basit gösteriyorum, şimdi bunlara biz template diyelim; yıllık izin, seyahat vs. Bunlara ekleme çıkartma yapılabilir o yüzden bunları bir tabloda tutun. Mesela:
templates
+----+-----------------+-------------+
| id | code | name |
+----+-----------------+-------------+
| 1 | annual-leave | Yıllık İzin |
| 2 | business-travel | İş Seyahati |
+----+-----------------+-------------+
Daha sonra bunları içerisindeki bilgi ile bir yerde tutacaksınız. Mesela
template_files
+----+-------------+--------------------------------------------------+
| id | template_id | data |
+----+-------------+--------------------------------------------------+
| 1 | 1 | {"name": "John", "starts_at":"2024-08-07 00:00"} |
| 2 | 2 | {"name": "John", "destination":"Şanlıurfa"} |
+----+-------------+--------------------------------------------------+
Burada şablon içine girecek veriyi json olarak tutacaksınız. Gördüğünüz gibi her şablonun json şeması farklı olabilir. Bu json veriyi html olarak render etmeye hazırlamak için ise Strategy dediğimiz tasarım desenini kullanabilirsiniz:
https://refactoring.guru/design-patterns/strategy
https://github.com/DesignPatternsPHP/DesignPatternsPHP/tree/main/Behavioral/Strategy