Я запустил с формы, которая сделана вручную из-за, это - сложность (это - измененная форма JavaScript, с поддающимися сортировке частями, и т.д.). Проблема состоит в том, что теперь я должен сделать проверку, и это - общая путаница, чтобы сделать это с нуля в действии с помощью sfValidator* классы.
Так, я думаю, чтобы сделать это с помощью sfForm так, чтобы моя проверка формы и обработка ошибок могли быть сделаны более легче и таким образом, я могу снова использовать эту форму для страниц Edit и Create.
Форма - что-то вроде этого:
<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 на стороне клиента. Так, чтобы это имело переменное количество объектов, которое может быть переупорядочено.
Как я могу приблизиться к этой проблеме?
Любые идеи приветствуются,
спасибо. :)
Я делаю нечто подобное, используя встроенные формы для повторяющихся полей.
В вашем классе формы вы можете сделать что-то вроде:
$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));
}