Как динамически заполнить виджет выбора в Symfony? - PullRequest
1 голос
/ 28 февраля 2010

Предположим, что в базе данных есть столбец 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" />

Где URL изображения генерируются на лету.

Как сделать это с ароматом Symfony sfForm?

Я пробовал это:

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

Но получите фатальную ошибку:

Невозможно получить доступ к защищенному свойству

Но как именно это сделать?

Ответы [ 2 ]

2 голосов
/ 28 февраля 2010

Ну, стандартный подход - написать виджет.

В вашем конкретном случае кажется, что вы действительно хотите сделать выбор, верно?Таким образом, вы должны реализовать еще один sfWidgetFormChoice рендер.Для этого унаследуйте sfWidgetFormSelectRadio (назовем их sfWidgetFormSelectRadioImage), чтобы научить их отображать метки в виде тегов <img>.Затем попросите sfWidgetFormChoice явно отобразить себя с классом sfWidgetFormSelectRadioImage, и это должно быть все.

0 голосов
/ 01 марта 2010

В вашей конфигурации формы введите следующее:

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