2017-09-21 2 views
1

J'ai deux entité calcParacalcSet.Comment utiliser deux entité en même temps

Je voudrais faire une forme avec cette forme.

Je peux faire chaque forme comme ces

$calcPara = new CalcPara(); 
$form = $this->createFormBuilder($calcPara)->add('save', SubmitType::class) 
    ->getForm(); 


$calcSet = new CalcSet(); 
$form = $this->createFormBuilder($calcSet)->add('save', SubmitType::class) 
    ->getForm(); 

Cependant, cela fait deux forme defferent.

Mais je veux faire une forme à partir de deux entités.

Comment puis-je le faire ??

Répondre

2

Dans Symfony, un formulaire contient un seul objet en tant que données le supportant, de sorte que vous ne pouvez pas affecter directement deux entités à ce rôle. Sans aller complètement à la construction manuelle du formulaire, vous pourriez plutôt faire un travail préparatoire combinant les deux Entités dans un nouveau type que vous avez défini contenant les membres importants des deux Entités. Cependant, vous devrez être responsable de la traduction des deux Entités dans le nouvel objet, et vice-versa lorsque le formulaire est soumis.

par exemple.

class CalcSetAndPara { 

    public function setSetValue($setValue) {} 
    public function getSetValue() {} 
    public function setParaValue($paraValue) {} 
    public function getParaValue(){} 
} 

Et l'utiliser:

$combinedObject = new CalcSetAndPara(); 
$combinedObject->setSetValue($calcSet->getValue()); 
$combinedObject->setParaValue($calcPara->getValue()); 

$form = $this->createFormBuilder($combinedObject)->add('save', SubmitType::class) 
    ->getForm(); 

//Then handle and do whatever you need to do with the results, extracting and persisting the two entities 
+0

Merci beaucoup, je devrais faire une nouvelle classe qui ne dispose que getter/setter, il est très compréhensible. – whitebear