2010-12-06 6 views
0

ich die Mutt Form innerhalb der Mix Formular eingebettet haben: MixForm.class.php:Formular mit eingebetteten Beziehung nicht speichern Symfony 1.4 Lehre

$this->embedRelation('Mutt'); 
$form = new MuttForm(null, array(
    'mix' =>$this->getObject(), 
)); 
$this->embedForm('Mutt', $form); 
$this->widgetSchema['Mutt'] = $form->getWidgetSchema(); 
$this->widgetSchema['Mutt']['mix_id'] = new sfWidgetFormInputHidden(); 
$this->validatorSchema['Mutt'] = $form->getValidatorSchema(); 

muss ich die neu für die Mix-Tabelle erstellt id Form um das mix_id-Feld in der Mutt-Tabelle aufzufüllen.

<?php echo $form->renderHiddenFields();?> 
<?php echo $form['name']->renderRow();?> 
<?php echo $form['parent1']->renderRow();?> 
<?php echo $form['parent2']->renderRow();?> 
<?php echo $form['parent3']->renderRow();?> 
<?php echo $form['parent4']->renderRow();?> 
<?php echo $form['parent5']->renderRow();?> 
<?php echo $form['Mutt']['creator']->renderRow();?> 
<?php echo $form['Mutt']['email']->renderRow();?> 
<?php echo $form['Mutt']['website']->renderRow();?> 
<?php echo $form['Mutt']['caption']->renderRow();?> 
<?php echo $form['Mutt']['photo']->renderRow();?> 
<?php echo $form['Mutt']['copyright']->renderRow();?> 
<?php echo $form['Mutt']->renderHiddenFields();?> 

Hier ist meine Aktion in modules/mix/Aktionen/actions.class.php

public function executeEdit(sfWebRequest $request) 
    { 
    $this->form = new MixForm(); 
    if($request->isMethod('post')): 
     $this->form->bind($request->getParameter('mix'), $request->getFiles($this->form->getName())); 
     if($this->form->isValid()): 
      $this->form->save(); 
      $this->redirect('pure/add'); 
     endif; 
    endif; 
    } 

Die Validierung Form richtig funktioniert, aber es wird nicht in einer Datenbank gespeichert werden. Was mache ich falsch ??

Antwort

0

Sie definieren eine Aktion für executeEdit, aber processForm ist die Aktion, bei der Formularvalidierung und Speichern in der Datenbank ausgeführt werden. executeEdit ist die Aktion zum Anzeigen eines Formulars beim Bearbeiten eines vorhandenen Jobs. Siehe: http://www.symfony-project.org/jobeet/1_4/Doctrine/en/10#chapter_10_sub_the_form_action

+0

Ich kombinierte die Aktion und das funktionierte gut, um das Formular zu speichern, bevor ich das andere Formular hinzufügte. Alles, was ich getan habe, war $ request-> getFiles ($ this-> form-> getName()) zu binden, da das eingebettete Formular eine Datei-Upload-Komponente hat. – Lauren

+0

Nun, es funktioniert nicht auf mehreren Formularen, wenn es eine Komponente zum Hochladen von Dateien gibt, also ist es Zeit für einen anderen Ansatz. Es gibt eine eingehende Anleitung zum Einbetten von Formularen unter http://www.symfony-project.org/more-with-symfony/1_4/en/06-Advanced-Forms, die in die Tiefe geht, um sfForm oder sfFormDoctrine einzubetten Objekte. – coltraneofmars