Я использую Symfony 1.4 и использую встроенные формы для размещения нескольких похожих форм в одной форме для страницы конфигурации.Я успешно показываю форму, но значения по умолчанию для виджетов sfWidgetFormChoice не отображаются, т.е. атрибут selected = "selected" отсутствует в HTML.
Кстати, значения по умолчанию отображаются, если я не использую встроенные формы.Проблема избегания встроенных форм состоит в том, что каждая форма имеет идентичные входные данные и поэтому перезаписывает себя.
Код действия как таковой, некоторые коды для краткости опущены:
$serviceFormArray = array();
$this->fullForm = new ConfigForm();
foreach($this->serviceArray as $net => $service)
{
$this->partialForm = new ConfigForm();
foreach($service as $typeId => $val)
{
$typeObj = Doctrine::getTable('Type')->find($typeId);
$typeField = new sfWidgetFormChoice(array(
'default' => $val,
'choices' => array('1' => 'on', '0' => 'off'),
'label' => $typeObj->name)
);
$typeField->setDefault($val);
$serviceFormArray[$typeObj->name] = $typeField;
}
$netObj = Doctrine::getTable('Network')->find($net);
$this->partialForm->setWidgets($serviceFormArray);
$this->fullForm->embedForm($netObj->name,$this->partialForm);
}
и шаблон выглядитнапример, для краткости пропущен некоторый код:
<div class="sectionBox">
<?php echo $fullForm->renderFormTag('/configure/submitconfig') ?>
<?php foreach ($fullForm->getVisibleFields() as $part => $field): ?>
<div class="settingsField">
<?php echo $field->renderLabel() ?>
<?php echo $field->render() ?>
<input type="hidden" name="plug" value="<?php echo $plugName; ?>"/>
</div>
<?php endforeach; ?>
<div id="submitConfig"><input type="submit" value="Save"/></div>
</form>
</div>