EmbeddedForm symfony save

时间:2011-07-28 17:25:33

标签: symfony-1.4

我在Soiree表格中解决新添加的“Prix”时遇到问题

我在我的SoireeForm中嵌入了PRixForm,我正在使用ajax调用来添加尽可能多的prix。

问题是,当我想通过点击“+”添加新PRix并填写我的字段后没有保存... 当我正在编辑或填充第一个默认的嵌入式表格prix时,它的工作原理很奇怪。只有那些由ajax添加的内容才会被保存..

这是我的代码

以我的形式,SoireeForm:

public function addNewPrix($number){

      $new_prix = new BaseForm();


        for($i=0; $i <= $number; $i+=1){

            $pri = new Prix();
            $pri->setSoiree($this->getObject());
            $prix_form = new PrixForm($pri);    
            $new_prix ->embedForm($i, $prix_form);

        }

        $this->embedForm('new', $new_prix);
    }

    public function saveEmbeddedForm($con = null, $forms = null){

            $dataForms = $this->getEmbeddedForm('new')->getEmbeddedForms();

                foreach ($dataForms as $dataForm)
                    $dataForm->getObject()->setSoiree($this->getObject());

                parent::saveEmbeddedForm($con, $forms);


      }

在我的行动中:

public function executeAdd($request)
    {
      $this->forward404unless($request->isXmlHttpRequest());
      $number = intval($request->getParameter("num"));

      $this->form = new SoireeForm();

      $this->form->addNewPrix($number);

      return $this->renderPartial('addPri',array('form' => $this->form, 'num' => $number));
    }

我的部分addPri:

<li>

 <?php echo $form['new'][$num]['titre']->renderLabel();?>
 <?php echo $form['new'][$num]['titre']->render()?>

 <?php echo $form['new'][$num]['montant']->renderLabel();?>
 <?php echo $form['new'][$num]['montant']->render();?>
 <br />
 <br />

和我的prix.js文件:

newfieldscount = 0;


function addPri(num) {
  return $.ajax({
    type: 'GET',
    url: '/backend_dev.php/soiree/add?num='+num,
    async: false
  }).responseText;

};


var removeNew = function(){
  $('.removenew').click(function(e){
    e.preventDefault();
    $(this).parent().remove();
  })
};

$(document).ready(function(){
 $('#add_prix').click(function(e) {
    e.preventDefault();
  $("ul#extraprix").append(addPri(newfieldscount));
  newfieldscount = newfieldscount + 1;
  $('.removenew').unbind('click');
  removeNew();
});

});

我想这个问题来自我的表单中的saveEmbed方法,但我不明白为什么或如何使一切正常工作。

提前谢谢你们

1 个答案:

答案 0 :(得分:0)

所以你想保存一个1:n的关系,所以你应该找到你需要的一切

如果没有,请提供PrixForm-&gt; configure()函数的信息或代码!

PS:您的saveEmbeddedForm()函数是不需要的,您可以在第6章的第二个链接中找到有关表单保存过程的更多信息!