【发布时间】:2020-07-09 14:58:37
【问题描述】:
我正在开发一个电子邮件模板系统。 设想: 在 textarea 中,用户正在编写电子邮件模板,他可以使用文本和树枝,因此他可以使用循环、条件块、变量等。 然后用户将模板保存到数据库中。在此之前,模板从树枝结构的角度进行验证。 然后我们可以从数据库中加载一个模板(字符串),提取所有必要的变量并作为它的服务。服务返回所有必要的变量后,我将其注入模板并发送电子邮件。
例如,模板可以是这样的
Hello {% if gender == 'm' %}Ms.{% else %}Mrs.{% endif% } {{name}}
Bla bla bla {{variable}} bla bla bal {{variable2}}
所以基本上我想从一个字符串中提取所有变量名。
我可以通过以下方式直接从数据库创建树枝模板:
$template = $this->twig->createTemplate($templateFromDatabase);
我可以通过
$tokens = $twig->tokenize($source);
但它没有告诉我哪些标记是变量
最后,我可以解析它并遍历结构并提取变量。
$parsed = $twig->parse($tokens);
但也许有一种更简单的方法可以从模板中获取所有变量名称。 另外,您知道在保存到数据库之前验证树枝模板的方法吗?
另外,我正在 Symfony 中创建一个服务来处理所有这些并返回 准备好发送的完整电子邮件模板,以便我可以使用 PHP 树枝函数
或者也许已经有捆绑或类似的东西(我没有找到任何东西) 提前致谢
【问题讨论】:
标签: php database symfony twig twig-extension