Symfony2根据URL更改表单标签

时间:2015-01-09 22:10:50

标签: php forms symfony

我有几个版本的表格存在。表格有完全相同的问题,但表格的标签根据谁填写表格而不同(第1人与第3人)。

有没有人对如何实现这一目标有任何想法。我知道我可以创建一组不同的模板,但是表单相当大,可以随时更改它。

我问,因为我发现Symfony的工具包很大,我担心我会忽视某些东西。截至目前,我认为可能的唯一方法是使用Event Listener

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

看来你严格谈论表现层。我会调查使用翻译。在控制器中有多个表单类或一堆逻辑将令人沮丧。你提到了第一和第三人。如何确定用户是否属于其中一个组?也许您为翻译组件创建了一个包装器服务,它会相应地检查您的需求和委托。看起来你所做的只是说另一种语言。

您的主要问题是确定谁是第一人,谁是第三人。整个会话都会改变吗?如果不在您的身份验证过程中执行此操作(安全选民可以执行此操作)或/并将其存储在会话中(如果更改)。覆盖翻译服务以使用您的包装器来决定要使用的翻译。

我决不是说这很容易,但我认为使用翻译组件,身份验证作为导演和服务容器,你可以得到你想要的东西,而不是混淆你的代码库。

答案 1 :(得分:0)

您有两个选择:

  1. 使用Symfony Forms要创建2个表单类,并在控制器中将相应的表单类设置为twig变量,然后在您呈现的模板中
  2. ```

    {{ form_start(form) }}
        {{ form_errors(form) }}
        {{ form_row(form.field1) }}
        {{ form_row(form.field2) }}
    {{ form_end(form) }}
    

    ```

    这样做可以让您根据查看对象来定义显示的表单。然后,您可以在服务配置中定义从控制器调用的方法,以便在调用Controller操作之前设置此类。