Симфония динамических форм - PullRequest
1 голос
/ 24 мая 2010

Я начал с формы, которая сделана вручную из-за ее сложности (это модифицированная JavaScript-форма, с сортируемыми частями и т. Д.). Проблема в том, что теперь мне нужно выполнить проверку, и это полный беспорядок, чтобы сделать это с нуля в действии, используя классы sfValidator *.

Итак, я думаю сделать это с помощью sfForm, чтобы сделать проверку формы и обработку ошибок проще, и я мог повторно использовать эту форму для страниц редактирования и создания.

Форма примерно такая:

<form>
  <input name="form[year]"/>
  <textarea name="form[description]"></textarea>
  <div class="sortable">
    <div class="item">
      <input name="form[items][0][name]"/>
      <input name="form[items][0][age]"/>
    </div>
    <div class="item">
      <input name="form[items][1][name]"/>
      <input name="form[items][1][age]"/>
    </div>
  </div>
</form>

Дело в том, что сортируемую часть формы можно расширить с 2 до N элементов на стороне клиента. Так что у него есть переменное количество предметов, которые можно переупорядочить.

Как я могу подойти к этой проблеме?

Любые идеи приветствуются,
благодарю вас. :)

1 Ответ

2 голосов
/ 24 мая 2010

Я делаю нечто подобное, используя встроенные формы для повторяющихся полей.

В своем классе вы можете сделать что-то вроде:

$form_data = $this->getObject();

if (isset($form_data['items']) && is_array($form_data['items']))
{
  $items_form = new BaseForm();

  foreach ($form_data['items'] as $count => $values)
  {
    $form = new BaseForm();
    $form->widgetSchema['name'] = new sfWidgetFormInputText();
    $form->widgetSchema['age'] = new sfWidgetFormInputText();

    $items_form->embedForm($count, $form);
  }

  $this->embedForm('items', $items_form);
  $this->validatorSchema['items'] = new sfValidatorPass(array('required' => false));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...