在textarea表单中粘贴和自定义模板

时间:2014-02-23 07:20:55

标签: templates symfony twig sonata-admin

我在模板中使用sonataadmin bundle和twig。 有一个带有文本字段的实体。带有网址的典型html代码可能包含在此文本字段中。 编辑文本的内容管理员不应该担心html结构。

我想制作一个简单的模板,像

这样的短代码
[template=button_block]{url=>name} {url2=>name2} ...[/template]

哪个内容管理员可以以textarea格式粘贴,在页面上文本字段将转换为html

<div class="labels">

      <div class="button">
         <a href="url1>name1</a>
      </div>

      <div class="button">
         <a href="url2>name2</a>
      </div>

      ...

</div>

解决这个问题的方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以将模板文本作为实体类中的默认值添加到实体,或者在创建表单的数据选项中设置文本,或者可以在定义时将文本分配给控制器中的实体新对象,然后将其传递给表单。

所有3种方法都会为您提供表单中要编辑的示例文本,但在我看来,它们并不是最佳解决方案。

使用OneToMany或ManyToMany关系正确地设置您的实体到一个为您存储URI和名称的链接实体会更好。然后,您可以纯粹在树枝模板中控制链接列表的格式。您可以在http://symfony.com/doc/current/cookbook/form/form_collections.html找到一个指导您完成整个过程的教程。此选项将花费更长时间,但这是最好的方法,因为它保持视图分离,保持数据更清洁,并使用户不太可能错误地破坏模板。