выберите значения по умолчанию в меню, которые не отображаются в symfony - PullRequest
0 голосов
/ 04 января 2011

Я использую 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>

1 Ответ

3 голосов
/ 04 января 2011

Попробуйте установить значение по умолчанию с помощью $form->setDefault($name, $default).

$this->partialForm->setDefault($typeObj->name, $val);
...