如何在symfony中动态填充选择小部件?

时间:2010-02-28 10:35:14

标签: forms symfony1 field

假设数据库中有image_url列。

我希望用户从几个推荐的图像中进行选择,如下所示:

<input type="radio" value="domain.com/path_to_img1" name="image_url" />
<img src="domain.com/path_to_img1" />
<input type="radio" value="domain.com/path_to_img2" name="image_url" />
<img src="domain.com/path_to_img2" />

图像网址即时生成。

如何通过sfForm在symfony风格中执行此操作?

我试过了:

$form->widgetSchema['key'] = new sfWidgetFormSelect(...)

但得到一个致命的错误:

  

无法访问受保护的属性

但是这样做的确切方法是什么?

2 个答案:

答案 0 :(得分:2)

好吧,标准方法是编写一个小部件。

在你的具体案例中,你似乎真的想要做出选择,对吗?因此,您必须实现另一个sfWidgetFormChoice渲染器。为此,请继承sfWidgetFormSelectRadio(让我们称之为sfWidgetFormSelectRadioImage)以了解它们将标签呈现为<img>标记。然后明确地要求sfWidgetFormChoice使用sfWidgetFormSelectRadioImage类呈现自己,这应该是全部。

答案 1 :(得分:0)

在表单配置中插入以下内容:

$this->widgetSchema['choices'] = new sfWidgetFormChoice (array('choices' => $custom_values_array));