The problem is, that you have to connect the object of the embeded form with the object of the master form somehow.
my embed form usage ... }this code is in the master form class in the configure method] // Embed paymentinfo form $this->embedForm('paymentinfo', new PaymentinfoForm($this->getObject()- >getMyPaymentinfo())); .. no change of the doSave() method this works for 1:1 relation On 24 kvě, 17:07, Tofuwarrior <p...@clearintent.co.uk> wrote: > Hi, > > UPDATE > > The same problem happens with edit/update not just new/create. > > Both objects save but FK becomes 1 whatever it was before. > > P > > Anyone? > > On May 24, 1:47 pm, Tofuwarrior <p...@clearintent.co.uk> wrote: > > > > > Hi Tom, > > > Thanks for replying. My problem has moved on. > > > I can render the forms fine now but when I save in new mode the system > > saves the parent(storyteller) and the child (contact_details) objects > > but doesn't put the right FK reference in the parent so all of the > > parent objects I save have a child_id of 1 even though the child form > > is saving and creating a new child object fine. > > > The create action is as follows: > > public function executeCreate(sfWebRequest $request) > > { > > $this->forward404Unless($request->isMethod(sfRequest::POST)); > > > $this->form = new MscdbStorytellerForm(); > > $params= $request->getParameter($this->form->getName()); > > $this->forward404Unless($this->MscdbProject = > > MscdbProjectPeer::retrieveByPK($params['project_id'])); > > > $this->checkOwnership(); > > > $this->form->embedForm('contact_details_id',new > > MscdbContactDetailsForm()); > > > $this->processForm($request, $this->form); > > > $this->setTemplate('new'); > > } > > > processForm is standard. $form->save() if the form isValid. > > > doSave etc is all standard.... > > protected function doSave($con = null) > > { > > if (null === $con) > > { > > $con = $this->getConnection(); > > } > > > $this->updateObject(); > > > $this->getObject()->save($con); > > // embedded forms > > $this->saveEmbeddedForms($con); > > } > > > Any ideas? I'm stumped. > > > On May 21, 3:26 pm, Tofuwarrior <p...@clearintent.co.uk> wrote: > > > > Hi, > > > > Anyone give me any pointers? I'm stumped and not really sure where to > > > look. Would really appreciate any help anyone could give, deadline is > > > looming :-( > > > > I have anembeddedform that works fine for the 'new' action but > > > when it gets called in edit then it throws an error, I've included the > > > stack trace at the bottom of this. > > > > I've checked that the object for theformalso has theembeddedobject > > > and it is fine, theformrenders fine until it gets the to echo > > > $form['embedded'] bit when it throws this error. > > > > 500 | Internal Server Error | InvalidArgumentException > > > You must pass an array of values to render a widget schema > > > stack trace > > > > * at () > > > in SF_ROOT_DIR/lib/vendor/symfony/lib/widget/ > > > sfWidgetFormSchema.class.php line 536 ... > > > 533. > > > 534. if (!is_array($values) && !$values instanceof > > > ArrayAccess) > > > 535. { > > > 536. throw new InvalidArgumentException('You must > > > pass an array of values to render a widget schema'); > > > 537. } > > > 538. > > > 539. $formFormat = $this->getFormFormatter(); > > > * at > > > sfWidgetFormSchema->render('mscdb_storyteller[contact_details_id]', 1, > > > array(), null) > > > > in SF_ROOT_DIR/lib/vendor/symfony/lib/widget/ > > > sfWidgetFormSchemaDecorator.class.php line 61 ... > > > 58. */ > > > 59. public function render($name, $values = array(), > > > $attributes = array(), $errors = array()) > > > 60. { > > > 61. return strtr($this->decorator, array('%content%' > > > => $this->widget->render($name, $values, $attributes, $errors))); > > > 62. } > > > 63. > > > 64. /** > > > * at > > > sfWidgetFormSchemaDecorator->render('mscdb_storyteller[contact_details_id]'-, > > > 1, array(), null) > > > > in SF_ROOT_DIR/lib/vendor/symfony/lib/widget/ > > > sfWidgetFormSchema.class.php line 512 ... > > > 509. $clone = clone $widget; > > > 510. $clone->setIdFormat($this->options['id_format']); > > > > 511. > > > 512. return $clone->render($this->generateName($name), > > > $value, array_merge($clone->getAttributes(), > > > > $attributes), $errors); > > > 513. } > > > 514. > > > 515. /** > > > * at sfWidgetFormSchema->renderField('contact_details_id', 1, > > > array(), null) > > > in SF_ROOT_DIR/lib/vendor/symfony/lib/form/sfFormField.class.php > > > line 119 ... > > > 116. { > > > 117. if ($this->parent) > > > 118. { > > > 119. return > > > $this->parent->getWidget()->renderField($this->name, $this->value, > > > $attributes, $this->error); > > > > 120. } > > > 121. else > > > 122. { > > > * at sfFormField->render() > > > in SF_ROOT_DIR/lib/vendor/symfony/lib/form/sfFormField.class.php > > > line 58 ... > > > 55. { > > > 56. try > > > 57. { > > > 58. return $this->render(); > > > 59. } > > > 60. catch (Exception $e) > > > 61. { > > > * at sfFormField->__toString() > > > in SF_ROOT_DIR/apps/frontend/modules/teller/templates/_form.php > > > line 59 ... > > > 56. <th><?php echo > > > $form['contact_details_id']->renderLabel() ?></th> > > > > 57. <td> > > > 58. <?php //echo > > > $form['contact_details_id']->renderError() ?> > > > > 59. <?php echo $form['contact_details_id'] ?> > > > 60. </td> > > > 61. </tr> > > > 62. > > > * at require('/mnt/Target01/338166/www.mostsignificantchange.com/ > > > web/apps/frontend/modules/teller/templates/_form.php') > > > in SF_ROOT_DIR/lib/vendor/symfony/lib/view/sfPHPView.class.php > > > line 75 ... > > > 72. > > > 73. try > > > 74. { > > > 75. require($_sfFile); > > > 76. } > > > 77. catch (Exception $e) > > > 78. { > > > * at > > > sfPHPView->renderFile('/mnt/Target01/338166/www.mostsignificantchange.com/web/apps/frontend/modules/teller/templa...) > > > in SF_ROOT_DIR/lib/vendor/symfony/lib/view/ > > > sfPartialView.class.php line 110 ... > > > 107. $this->getAttributeHolder()->set('sf_type', > > > 'partial'); > > > 108. > > > 109. // render template > > > 110. $retval = > > > $this->renderFile($this->getDirectory().'/'.$this->getTemplate()); > > > > 111. } > > > 112. catch (Exception $e) > > > 113. { > > > * at sfPartialView->render() > > > in SF_ROOT_DIR/lib/vendor/symfony/lib/helper/PartialHelper.php > > > line 218 ... > > > 215. $view = new $class($context, $moduleName, > > > $actionName, ''); > > > 216. $view->setPartialVars(true === > > > sfConfig::get('sf_escaping_strategy') ? > > > sfOutputEscaper::unescape($vars) : $vars); > > > 217. > > > 218. return $view->render(); > > > 219. } > > > 220. > > > 221. /** > > > * at get_partial('form', array('form' => > > > object('MscdbStorytellerForm'))) > > > in SF_ROOT_DIR/lib/vendor/symfony/lib/helper/PartialHelper.php > > > line 180 ... > > > 177. */ > > > 178. function include_partial($templateName, $vars = > > > array()) > > > 179. { > > > 180. echo get_partial($templateName, $vars); > > > 181. } > > > 182. > > > 183. /** > > > * at include_partial('form', array('form' => > > > object('MscdbStorytellerForm'))) > > > in SF_ROOT_DIR/apps/frontend/modules/teller/templates/ > > > editSuccess.php line 3 ... > > > 1. <h1>Edit Storyteller</h1> > > > 2. > > > 3. <?php include_partial('form', array('form' => > > > $form)) ?> > > > 4. > > > * at require('/mnt/Target01/338166/www.mostsignificantchange.com/ > > > web/apps/frontend/modules/teller/templates/editSuccess.php') > > > in SF_ROOT_DIR/lib/vendor/symfony/lib/view/sfPHPView.class.php > > > line 75 ... > > > 72. > > > 73. try > > > 74. { > > > 75. require($_sfFile); > > > 76. } > > > 77. catch (Exception $e) > > > 78. { > > > * at > > > sfPHPView->renderFile('/mnt/Target01/338166/www.mostsignificantchange.com/web/apps/frontend/modules/teller/templa...) > > > in SF_ROOT_DIR/lib/vendor/symfony/lib/view/sfPHPView.class.php > > > line 185 ... > > > 182. $this->attributeHolder->set('sf_type', > > > 'action'); > > > 183. > > > 184. // render template file > > > 185. $content = > > > $this->renderFile($this->getDirectory().'/'.$this->getTemplate()); > > > > 186. > > > 187. if (sfConfig::get('sf_cache') && null !== > > > $uri) > > > 188. > > ... > > číst dál >> -- If you want to report a vulnerability issue on symfony, please send it to security at symfony-project.com You received this message because you are subscribed to the Google Groups "symfony users" group. To post to this group, send email to symfony-users@googlegroups.com To unsubscribe from this group, send email to symfony-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en