【问题标题】:Collection theming in Symfony 2, different for each level of nested formSymfony 2 中的集合主题,每个级别的嵌套形式都不同
【发布时间】:2014-03-27 22:53:29
【问题描述】:

我对此的研究发现了多种主题化 Symfony 2 表单集合的方法,但到目前为止还没有一种方法可以让您区分多个嵌套表单的 form_rows,以使它们以不同的方式显示。

我有一个 3 层嵌套表单,由顶部 Main 组成,其中包含 Collection 中的多个(DB 支持的)Section,每个 Section 包含 Collection 中的几个(DB 支持的)问题。我想使用 DIV 来控制部分的布局,但我想使用 TABLE 来控制每组问题的布局。

<div id="main">
    <div id="section1">
        <table>
            <tr>Question 1</tr>
            <tr>Question 2</tr>
        </table>
    </div>
    <div id="section2">
        <table>
            <tr>Question 3</tr>
            <tr>Question 4</tr>
        </table>
    </div>
</div>

我知道,对于一个完整的表单,我可以如何更改 form_row 函数用于呈现行的模板片段,但这里我需要至少两种不同类型的行。我不认为您可以使用两个不同的模板片段制作自己的 form_row 函数,该函数有两种工作方式。

如何渲染一个级别的字段与另一个级别完全不同?

【问题讨论】:

  • 你尝试过使用 CSS 样式吗?使用 :first:nth-child(2) 选择器,您可以将规则应用于 2 个部分。
  • 您可能仍会使用主题。在呈现嵌套集合的部分中,您只需要检查当前元素的深度。我的猜测是对当前元素的父元素进行递归检查,如果它没有父元素,那么你在顶层,如果它有 1,那么你在第二层,2 个父元素你在第三层,以此类推。
  • @n.1 谢谢,我同意 CSS 可能是一种方法,但如果可能的话,我更喜欢使用 Symfony 主题(就像我在这个领域的大多数其他任务一样)
  • @Chausser 听起来不错,我认为它可以在这里工作。我将如何在树枝块中进行父检查,你能举个例子吗?
  • 让我做一些测试,然后回复你。

标签: php forms symfony theming


【解决方案1】:

所以,与其让这个悬而未决,我会回答它。

我所问的问题在技术上可能不是不可能的,也许是通过@Chausser 提出的嵌套检测技术,但它至少是困难/笨拙的。

最后我通过简单地使用 Symfony 的普通 customised Form rendering features 解决了这个问题 - 将每个字段等添加到详细的 Twig 模板中的正确位置。在询问的时候,我对 Symfony 2 完全陌生,甚至没有意识到这是可能的!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    • 2014-02-12
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多