0

我在 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 < sfWidgetFormChoice < sfWidgetFormChoiceBase < sfWidgetForm < sfWidget

这是表单的类继承:

ProductForm < BaseProductForm < BaseFormDoctrine < sfFormDoctrine < sfFormObject

这就是小部件在视图上打印的方式:

<?php echo $form['product_type_list'] ?>

问题是,在最后一行中,我认为我会在表单类上找到一些神奇的 __get() 方法,并且(可能)在小部件类上找到一个 __toString() 方法,但我没有找到它们,我仍然不确定如何在 Symfony 1.4 和 Doctrine 中扩展小部件。

有人能指出我正确的方向吗?

4

1 回答 1

1

我认为您有两种解决该问题的可能性:

首先是编写自己的小部件,它继承自sfWidgetFormDoctrineChoice. 因此,您可以__toString()根据您的要求实现自定义方法。(见文档

你应该看看sfWidgetFormChoice目标方法 self sfWidgetFormDoctrineChoice。如果您编写自己的类继承自sfWidgetFormDoctrineChoice您可以覆盖方法rendergetJavaScripts. 此外,您可以为这个小部件实现自己的渲染器,它可以制作 js 选项卡和 gui 内容。

第二个选项是,您隐藏默认表单字段并使用 javascript 构建新的表示。您想构建选项卡,所以您应该已经使用 js 来启用它?!

于 2013-01-10T16:33:34.267 回答