Я весь день пытался сделать несколько вставок для одной и той же формы на основе числа, и я не мог пойти куда-нибудь с ним. Я надеюсь, что кто-то здесь поможет мне ...
Я использую генератор администратора по доктрине 1.4. У меня есть форма, которую я создал только с двумя полями. то, что я пытаюсь сделать, на основании введенного числа, форма будет повторяться x раз.
В файле генератора я добавил частичное, которое поместило текстовое поле в начало формы со значением по умолчанию, равным 1. Если я выберу 2, форма ниже дублируется дважды ..
Вот что я сделал с моей формой .. В действии
class prizesActions extends autoPrizesActions
{
публичная функция executeNew (sfWebRequest $ request)
{
$this->form = $this->configuration->getForm(null, array('n' => 5));
$this->prizes = $this->form->getObject();
}
}
и в PrizesForm я написал следующее
class PrizesForm extends BasePrizesForm
{
публичная функция configure ()
{
$ array = $ this-> getOptions ();
для ($ i = 0; $ i <$ array ['n']; $ i ++) {</p>
$this->setWidgets(array(
'id' => new sfWidgetFormInputHidden(),
'prize_no' => new sfWidgetFormInputText(),
'prize' => new sfWidgetFormInputText(),
'created_at' => new sfWidgetFormDateTime(),
'updated_at' => new sfWidgetFormDateTime(),
));
$this->setValidators(array(
'id' => new sfValidatorDoctrineChoice(array('model' => $this->getModelName(), 'column' => 'id', 'required' => false)),
'prize_no' => new sfValidatorInteger(array('required' => false)),
'prize' => new sfValidatorString(array('max_length' => 200, 'required' => false)),
'created_at' => new sfValidatorDateTime(),
'updated_at' => new sfValidatorDateTime(),
));
$this->widgetSchema->setNameFormat('prizes['.$i.'][%s]');
$this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
}
unset( $this['updated_at'],
$this['created_at']
);
}
} * * Тысяча двадцать-один
Я думаю, что цикл работает, но он перезаписывает виджеты при каждой записи, и я не могу найти другой метод для добавления вместо него. Есть идеи?
Спасибо