我在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方法,但我不明白为什么或如何使一切正常工作。
提前谢谢你们
答案 0 :(得分:0)
所以你想保存一个1:n的关系,所以你应该找到你需要的一切
如果没有,请提供PrixForm-&gt; configure()函数的信息或代码!
PS:您的saveEmbeddedForm()函数是不需要的,您可以在第6章的第二个链接中找到有关表单保存过程的更多信息!