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

Forms 如何在symfony中动态填充选项小部件?,forms,symfony1,field,Forms,Symfony1,Field,假设数据库中有一个image\uurl列 我希望用户从几个推荐的图像中进行选择,如下所示: <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" /> <

假设数据库中有一个
image\uurl

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

<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" />
但有一个致命的错误:

无法访问受保护的属性


但具体的方法是什么呢?

嗯,标准的方法是编写一个小部件


在你的具体案例中,你似乎真的想要做出选择,对吗?因此,您必须实现另一个
sfWidgetFormChoice
渲染器。为此,请继承
sfWidgetFormSelectRadio
(我们称之为
sfwidgetformselectradiomage
)以学习如何将标签呈现为
标记。然后明确要求
sfwidgetformselectradiomage
sfwidgetformselectradiomage
类呈现自身,这就足够了。

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

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

你能举例说明吗?不,现在我不能。提示:深入并覆盖
sfWidgetFormSelectRadio::render()
。谢谢。但我找不到动态填充选项的代码。@user198729“动态”是什么意思?你能描述一下它应该是什么样子吗?我认为您只需要将URL作为选项的标签传递。您不能将$custom\u values\u数组构建背后的逻辑从操作转移到表单吗?
$this->widgetSchema['choices'] = new sfWidgetFormChoice (array('choices' => $custom_values_array));