我在Symfony 1.4中有一个Doctrine表单。
我需要做什么:
我需要使用sfWidgetFormDoctrineChoice对象显示我目前提供的相同选项,但我想在选项卡式视图中显示它们。
我目前的观点如下:
[ ] option1
[ ] option2
[ ] option1.1
[ ] option1.2
[ ] option1.3
[ ] option2.1
[ ] option2.2
[ ] option2.3
[ ] option2.4
我想像这样向他们展示:
+-------------+-------------+
| > option1 < | option2 | (tabs, option1 is the currently selected one)
+-------------+-------------+--------------------------+
[ ] option1.1 (options on first tab)
[ ] option1.2
[ ] option1.3
+------------------------------------------------------+
使用parent
属性关联选项
顶行的那些将无法检查,其parent
将为NULL
。
我想如果我知道如何扩展课程,我会设法自己解决这个问题,我的意思是,重新定义的方法。
我一直在尝试:
这是小部件的类继承:
sfWidgetFormDoctrineChoice &lt; sfWidgetFormChoice &lt; sfWidgetFormChoiceBase &lt; sfWidgetForm &lt; sfWidget
这是表格的类继承:
ProductForm &lt; BaseProductForm &lt; BaseFormDoctrine &lt; sfFormDoctrine &lt; sfFormObject
这就是小部件在视图上打印的方式:
<?php echo $form['product_type_list'] ?>
问题是,在最后一行我认为我会在窗体类上找到一些神奇的__get()方法,并且(可能)在窗口小部件类上找到一个__toString()方法,但是我找不到它们,而我我还不确定如何在Symfony 1.4和Doctrine中扩展小部件。
有人能指出我正确的方向吗?
答案 0 :(得分:1)
我认为你有两种可能解决这个问题:
第一种是编写自己的小部件,它继承自sfWidgetFormDoctrineChoice
。因此,您可以根据自己的要求实施自定义__toString()
方法。 (见documentation)
您应该查看sfWidgetFormChoice
和目标方法self sfWidgetFormDoctrineChoice
。如果您编写自己的类继承自sfWidgetFormDoctrineChoice
,则可以覆盖方法render
和getJavaScripts
。此外,您可以为此窗口小部件实现自己的渲染器,这将生成js选项卡和gui内容。
第二个选项是,隐藏默认表单字段并使用javascript构建新的表示。你想构建标签,所以你应该已经使用js来启用它了吗?!