【发布时间】:2014-12-03 12:07:57
【问题描述】:
我尝试在同一页面上进行简单的登录注册。
- 一种登记表
- 一个用于登录的表单。
我设法在我想要的页面上呈现 2 个表单,但如果我尝试提交注册表单,它会给我一个消息,指出另一个表单不能为空。
在我尝试合并页面之前,我的注册工作没有任何问题,我的登录不是(只是创建了表单)我的代码:
AccountController.php 渲染到模板的文件。
在RegistrationType.php和LoginType.php中实现了表单创建
<?php
namespace Spyros\MapBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Spyros\MapBundle\Form\Type\RegistrationType;
use Spyros\MapBundle\Form\Type\LoginType;
use Spyros\MapBundle\Form\Model\Registration;
use Spyros\MapBundle\Form\Model\Login;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class AccountController extends Controller
{
public function registerAction()
{
$registration = new Registration();
$form1 = $this->createForm(new RegistrationType() , $registration, array(
'action' => $this->generateUrl('account_create') ,
));
$login = new Login();
$form2 = $this->createForm(new LoginType() , $login, array(
'action' => $this->generateUrl('account_create') ,
));
return $this->render('SpyrosMapBundle:Account:register.html.twig', array(
'form1' => $form1->createView() ,
'form2' => $form2->createView()
));
}
public function createAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$form1 = $this->createForm(new RegistrationType() , new Registration());
$form1 > handleRequest($request);
if ($form1->isValid())
{
$registration = $form1->getData();
$em->persist($registration->getUser());
$em->flush();
echo "<p>hi</p>";
}
return $this->render('SpyrosMapBundle:Account:register.html.twig', array(
'form1' => $form1->createView()
));
}
}
register.html.twig:
{% extends 'SpyrosMapBundle::rightform.html.twig' %}
{% form_theme form1 'bootstrap_3_layout.html.twig' %}
{% form_theme form2 'bootstrap_3_layout.html.twig' %}
{% block body %}
<body>
<section class="container">
<section class="row">
<section class="col col-lg-9">
{{ form_start(form2 , {'attr': {'class': 'form-inline'}} )}}
{{ form_row(form2.user.email)}}
{{ form_row(form2.user.plainPassword)}}
<div id="inline">
{{ form_row(form2.Login) }}
</div>
</section>
<section class="col col-lg-3">
{{ form(form1) }}
</section>
</section>
</section>
</body>
{% endblock %}
我的视图页面:
我如何在没有 form2 的情况下提交我的注册表单 (form1) 给我一条消息以填写其字段。
【问题讨论】:
-
不要对每个表单使用相同的 action="",而是为每个表单创建一个专用控制器,并确保两者都不会尝试处理另一个。
-
如果我为每个表单制作 2 个专用控制器,我将如何在同一页面中租用它们?
-
你是什么意思?您希望能够同时填写和发送这两个表格吗?
-
我不想同时提交它们,只希望看到两个表单并能够提交其中一个。专用控制器将仅用于提交?不创造?
标签: php symfony symfony-forms symfony-2.6