Bonjour,

Je veux créer un formulaire de facture avec plusieurs articles. Voilà des jours que je cherche comment y arriver mais c'est l'impasse. J'essaie de télécharger le plugin ahEasyDoctrineEmbeddedRelationPlugin mais c'est pas possible j'ai un probléme avec pear.php. J'ai symfony 1.4.5 avec php5.3.0

Je vous mets le max de code pour pouvoir m'aider car je dois terminer cette application dans une semaine et c'est pour mon rapport de stage.

voilà mon schéma.yml il me semble correct mais j'ai des doutes quant aux relations entre facture et prestation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
Client:
  columns:
    id:
      type: integer(4)      
      primary: true
      autoincrement: true
    rais_soc:
      type: string(250)      
    adresse:
      type: string(250)      
    cod_postal:
      type: integer(5)      
    ville:
      type: string(30)      
    tel:
      type: integer(10)
 
Contenir:  
  columns:
    prestation_id:
      type: integer(4)
      primary: true      
    facture_id:
      type: integer(4) 
      primary: true     
    quantite:
      type: integer(4)      
  relations:
    Facture:
      foreignAlias: Contenirs
    Prestation:
      foreignAlias: Contenirs
 
Facture:  
  columns:
    id:
      type: integer(4)      
      primary: true      
    client_id:
      type: integer(4)            
    date_fre:
      type: string(10)      
    montant_fre:
      type: integer      
  relations:
    Client:
      foreignAlias: Factures     
 
Prestation:  
  columns:
    id:
      type: integer(4)      
      primary: true
      autoincrement: true
    designation:
      type: string(250)      
    pu:
      type: integer(4)      
  relations:
    Factures:
      foreignAlias: Prestations
      class: Facture
      refClass: Contenir
 
Reglement:  
  columns:
    id:
      type: integer(4)      
      primary: true
      autoincrement: true
    facture_id:
      type: integer(4)      
    date_reglement:
      type: string(10)      
    montant_reglement:
      type: integer(4)
 
  relations:
    Facture:
      foreignAlias: Reglements
voilà mon action class de facture:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
public function executeNew(sfWebRequest $request)
  {
    $this->form = new factureForm();
	//$this->form1 = new prestationForm();
  }
 
  public function executeCreate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST));
 
    $this->form = new factureForm();
	//$this->form1 = new prestationForm();
 
    $this->processForm($request, $this->form);
 
    $this->setTemplate('new');
  }
 
  public function executeEdit(sfWebRequest $request)
  {
    $this->forward404Unless($facture = Doctrine::getTable('facture')->find(array($request->getParameter('id'))), sprintf('Object facture does not exist (%s).', $request->getParameter('id')));
    $this->form = new factureForm($facture);
  }
 
  public function executeUpdate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($facture = Doctrine::getTable('facture')->find(array($request->getParameter('id'))), sprintf('Object facture does not exist (%s).', $request->getParameter('id')));
    $this->form = new factureForm($facture);
 
    $this->processForm($request, $this->form);
 
    $this->setTemplate('edit');
  }
 
  public function executeDelete(sfWebRequest $request)
  {
    $request->checkCSRFProtection();
 
    $this->forward404Unless($facture = Doctrine::getTable('facture')->find(array($request->getParameter('id'))), sprintf('Object facture does not exist (%s).', $request->getParameter('id')));
    $facture->delete();
 
    $this->redirect('facture/index');
  }
 
  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
	//$form1->bind($request->getParameter($form1->getName()), $request->getFiles($form1->getName()));
 
    if ($form->isValid())
    {
      $facture = $form->save();
 
      $this->redirect('facture/edit?id='.$facture->getId());
    }
  }
}
voilà le formulaire facture :
A noter que quand je met $this-> embedRelation ça marche pas, j'ai un message d'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
class FactureForm extends BaseFactureForm
{
  public function configure()
  { 
	unset($this['PU']);	
 
		$this->embedForm('prestations', new PrestationForm());
 
  }
 
 
}
avec ce formulaire j'ai le formulaire prestation(equivalent à article) mais une seule ligne. Si quelqu'un peut m'aider à résoudre ce probléme svp.Merci.