Ouai je te les posterais si je ne trouve pas.
Voici ce que j'ai et je ne cromprend pas pourquoi cela ne marche pas.
action.php
Code:
1
2
3
4
5
6
7
8 public function executeNewByModel(sfWebRequest $request) { $model = $this->getRoute()->getObject(); $this->article_type = $model->copy(true); $this->form = $this->configuration->getForm($this->article_type); $this->setTemplate('new'); }
ArticleForm.php
Ceci marche.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 configure(){ $subForm = new sfForm(); for ($i = 0; $i < 2; $i++) { $composition = new ArticleComposition(); $composition->article = $this->getObject(); $compositionForm = new ArticleCompositionForm($composition); $compositionForm->setDefault('article_id', $this->object->id); $compositionForm->widgetSchema['article_id'] = new sfWidgetFormInputHidden(); unset($compositionForm['article_id'], $compositionForm['quantite']); $compositionForm->widgetSchema['article_compose_id'] = new sfWidgetFormDoctrineChoice(array('model' => $compositionForm->getRelatedModelName('element'), 'add_empty' => true)); $subForm->embedForm($i', $compositionForm); } $this->embedForm('TEST', $subForm); }
Maintenant en modifiant un peu :
action.php:
ArticleForm.phpCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public function executeNewByModel(sfWebRequest $request) { $model = $this->getRoute()->getObject(); $this->article_type = $model->copy(true); $collection = new Doctrine_Collection ("ArticleComposition"); foreach($model->getEstComposes() as $composition) { $temp = $composition->copy(true); $temp->article = $this->article_type; $collection->add($temp); } $this->article_type->estComposes = $collection; $this->form = $this->configuration->getForm($this->article_type); $this->setTemplate('new'); }
Ce code ne marche pasCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 configure() { $subForm = new sfForm(); foreach ($this->getObject()->getEstComposes() as $composition) { $composition->article = $this->getObject(); $compositionForm= new ArticleCompositionForm($composition); $compositionForm->widgetSchema['article_compose_id'] = new sfWidgetFormDoctrineChoice(array('model' => $compositionForm->getRelatedModelName('element'), 'add_empty' => true)); $compositionForm->setDefault('article_id', $this->object->id); $compositionForm->widgetSchema['article_id'] = new sfWidgetFormInputHidden(); unset($compositionForm['article_id']); $subForm->embedForm($i++, $compositionForm); } $this->embedForm('test', $subForm); }
J'ai essayé en mettantmais cela ne change rien.Code:$this->getObject()->setEstComposes(new Doctrine_Collection ("ArticleComposition"));
voici l'erreur :
Une idée ? Il est écrit que c'est la faute des validateurs mais je ne vois pas pourquoi dans un cas, cela marche mais pas dans l'autre.Code:
1
2 Unexpected extra form field named "0". Unexpected extra form field named "1".