我有一个包含两个表单的页面,每个表单都是通过单击一个选项卡显示的,每个表单都有一个“添加”按钮,问题是当我点击添加第一个或第二个表单时我可以' t将数据保存在数据库中。 谢谢您的帮助 以下是两种形式的持续行动: Controller.php这样
public function ajouterPSAction()
{
$affairePS = new AffairePanneauSolaire;
$affairePC = new AffairePompeChaleur;
$form1 = $this->createForm(new AffairePanneauSolaireType(), $affairePS);
$form = $this->createForm(new AffairePanneauSolaireType(), $affairePC);
$req = $this->get('request');
if( $req->getMethod() === 'POST' )
{
$form1->bind($req);
if ($form1->isValid()) {
$em = $this->getDoctrine()
->getManager();
$em->persist($affairePS);
$em->flush();
// On définit un message flash
$this->get('session')->getFlashBag()->add('info', 'Affaire bien ajouté');
// Puis on redirige vers la page de visualisation :
return $this->redirect( $this->generateUrl('affaire_voir_affairePS', array(
'id' => $affairePS->getId()
)) ); }
}
// Si on n'est pas en POST, alors on affiche le formulaire
return $this->render('AffaireBundle:Affaires:ajouter.html.twig', array('form' => $form->createView(),'form1' => $form1->createView()));
}
public function ajouterPCAction()
{
$affairePC = new AffairePompeChaleur;
$affairePS = new AffairePanneauSolaire;
$form = $this->createForm(new AffairePompeChaleurType(), $affairePC);
$form1 = $this->createForm(new AffairePanneauSolaireType(), $affairePS);
$req = $this->get('request');
if( $req->getMethod() === 'POST' )
{
$form->bind($req);
if ($form->isValid()) {
$em = $this->getDoctrine()
->getManager();
$em->persist($affairePC);
$em->flush();
// On définit un message flash
$this->get('session')->getFlashBag()->add('info', 'Affaire bien ajouté');
// Puis on redirige vers la page de visualisation :
return $this->redirect( $this->generateUrl('affaire_voir_affairePC', array(
'id' => $affairePC->getId()
)) ); }
}
// Si on n'est pas en POST, alors on affiche le formulaire
return $this->render('AffaireBundle:Affaires:ajouter.html.twig', array('form' => $form->createView(),'form1' => $form1->createView()));
}
对于两个动作ajouterPSAction和ajouterPCaction,我让他们原样?或者我必须花费新表格的每一个动作? 将拖曳表格显示为2个标签,我就这样吗?
<div class="tabbable">
<ul id="myTab" class="nav nav-tabs" style="width: 1270px;">
<li><a href="#home" data-toggle="tab">Pompe à chaleur</a></li>
<li><a href="#profile" data-toggle="tab">Panneaux solaires</a></li>
</ul>
<div class="tab-content" style="float: left;">
<div class="tab-pane fade in active" id="home">{% include "AffaireBundle:Affaires:formulairePC.html.twig" %} </div>
<div class="tab-pane fade in " id="profile"> {% include "AffaireBundle:Affaires:formulairePS.html.twig" %}</div>
</div>
</div>
答案 0 :(得分:0)
我认为您应该尝试将其设为一个表单,但显示在2个标签中:
$affairePS
(AffairePanneauSolaire
)和$affairePC
(AffairePompeChaleur
)data_class
<form>
内呈现新表单,但显示为2个标签,两个标签都有提交按钮表单类代码:
class BarType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('affairePS', new AffairePanneauSolaireType())
->add('affairePC', new AffairePompeChaleurType())
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(
array(
'data_class' => 'Path\To\New\Entity',
)
);
}
public function getName()
{
return 'foo_bar_type';
}
}
行动代码:
public function fooAction()
{
$newFormEntity = new \Path\To\New\Entity();
$newFormEntity->setAffairePS(new AffairePanneauSolaire());
$newFormEntity->setAffairePC(new AffairePompeChaleur());
$form = $this->createForm(new BarType(), $newFormEntity);
}