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. { > * at sfPHPView->render() > in SF_ROOT_DIR/lib/vendor/symfony/lib/filter/ > sfExecutionFilter.class.php line 155 ... > 152. break; > 153. > 154. case sfView::RENDER_CLIENT: > 155. $viewData = $view->render(); > 156. > $this->context->getResponse()->setContent($viewData); > > 157. break; > 158. > * at sfExecutionFilter->executeView('teller', 'edit', 'Success', > array('MscdbProject' => object('MscdbProject'), 'form' => > object('MscdbStorytellerForm'))) > in SF_ROOT_DIR/lib/vendor/symfony/lib/filter/ > sfExecutionFilter.class.php line 116 ... > 113. return; > 114. } > 115. > 116. $this->executeView($actionInstance->getModuleName(), > $actionInstance->getActionName(), $viewName, > > $actionInstance->getVarHolder()->getAll()); > 117. } > 118. > 119. /** > * at sfExecutionFilter->handleView(object('sfFilterChain'), > object('tellerActions'), 'Success') > in SF_ROOT_DIR/lib/vendor/symfony/lib/filter/ > sfExecutionFilter.class.php line 47 ... > 44. $timer->addTime(); > 45. $timer = > sfTimerManager::getTimer(sprintf('View "%s" for "%s/%s"', $viewName, > $actionInstance->getModuleName(), $actionInstance->getActionName())); > 46. > 47. $this->handleView($filterChain, > $actionInstance, $viewName); > 48. > 49. $timer->addTime(); > 50. } > * at sfExecutionFilter->execute(object('sfFilterChain')) > in SF_ROOT_DIR/lib/vendor/symfony/lib/filter/ > sfFilterChain.class.php line 53 ... > 50. } > 51. > 52. // execute the next filter > 53. $this->chain[$this->index]->execute($this); > 54. } > 55. } > 56. > * at sfFilterChain->execute() > in SF_ROOT_DIR/lib/vendor/symfony/lib/filter/ > sfBasicSecurityFilter.class.php line 72 ... > 69. } > 70. > 71. // the user has access, continue > 72. $filterChain->execute(); > 73. } > 74. > 75. /** > * at sfBasicSecurityFilter->execute(object('sfFilterChain')) > in SF_ROOT_DIR/lib/vendor/symfony/lib/filter/ > sfFilterChain.class.php line 53 ... > 50. } > 51. > 52. // execute the next filter > 53. $this->chain[$this->index]->execute($this); > 54. } > 55. } > 56. > * at sfFilterChain->execute() > in SF_ROOT_DIR/lib/vendor/symfony/lib/filter/ > sfRenderingFilter.class.php line 33 ... > 30. public function execute($filterChain) > 31. { > 32. // execute next filter > 33. $filterChain->execute(); > 34. > 35. // get response object > 36. $response = $this->context->getResponse(); > * at sfRenderingFilter->execute(object('sfFilterChain')) > in SF_ROOT_DIR/lib/vendor/symfony/lib/filter/ > ... > > read more » -- 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