我想在我的主页上有两个表单,来自两个实体,在同一个控制器中。
表格如下:
class DevisController extends Controller
{
public function DevisAction(Request $request)
{
$devis = new Devis();
$form = $this->createForm(new DevisType(), $devis);
if ($form->handleRequest($request)->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($devis);
$em->flush();
$request
->getSession()
->getFlashBag()
->add('info', 'Le devis a bien été envoyé !');
$message = \Swift_Message::newInstance();
$imgUrl = $message->attach(\Swift_Attachment::fromPath('http://img15.hostingpics.net/pics/419370oah.png'));
$message
->setSubject('Demande de devis bien reçue !')
->setFrom('xxx@gmail.com')
->setTo($devis->getEmail())
->setBody(
$this->renderView(
'OAHDevisBundle:Devis:devis_email.html.twig',
array('url' => $imgUrl)
),
'text/html'
);
$this->get('mailer')->send($message);
$message = \Swift_Message::newInstance()
->setSubject('Nouvelle demande de devis')
->setFrom('xxxn@gmail.com')
->setTo('xxxn@gmail.com')
->setBody(
$this->renderView(
'OAHDevisBundle:Devis:devis_recu.html.twig'
),
'text/html'
);
$this->get('mailer')->send($message);
return $this->redirect($this->generateUrl('oah_core_homepage'));
}
// Si on n'est pas en POST, alors on affiche le formulaire
return $this->render('OAHCoreBundle:Core:layout.html.twig', array(
'form' => $form->createView(),
));
}
public function NewsletterAction(Request $request)
{
$newsletter = new Newsletter();
$formEmail = $this->createForm(new NewsletterType(), $newsletter);
if ($formEmail->handleRequest($request)->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($newsletter);
$em->flush();
$request
->getSession()
->getFlashBag()
->add('info', 'Vous êtes bien inscrit à la newsletter ');
return $this->redirect($this->generateUrl('oah_core_homepage'));
}
return $this->render('OAHCoreBundle:Core:layout.html.twig', array(
'formEmail' => $formEmail->createView(),
));
}
}
第一个完美无缺,第二个我改变了变量名称,以便为树枝做出改变。 所以在我的模板中,我有第二个:
{{ form(formEmail) }}
每次我发出以下错误:
变量" formEmail"在...中不存在 OAHCoreBundle:核心:第384行的layout.html.twig
请问这有什么问题?
答案 0 :(得分:3)
根据您当前的代码,您只需拨打self
。
在执行此操作时,您甚至没有触及DevisAction
,这就是为什么您的树枝无法找到NewsletterAction
表格。
尝试将这两个表单包含在这样的一个控制器操作中,并且应该正确呈现。
formEmail
编辑这仍然需要通过提供正确的表单验证来清理,我还没有完成,但渲染问题应该解决。