EmbeddedForm Symfony сохранение - PullRequest
0 голосов
/ 28 июля 2011

У меня возникла проблема с решением недавно добавленного "Prix" в моей форме Soiree

Я встроил PRixForm в свою SoireeForm и использую вызовы ajax, чтобы добавить столько призов, сколько мыхочу.

Проблема в том, что когда я хочу добавить новый 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 голосов
/ 18 августа 2011

Итак, вы хотите сохранить отношение 1: n, поэтому вы должны найти здесь все, что вам нужно

Если нет, предоставьте информацию или код вашей функции PrixForm-> configure ()!

PS: Ваша функция saveEmbeddedForm () не нужна, больше информации о процессе сохранения формы вы найдете во второй ссылке в главе 6!

...