Symfony表单提交重定向到页面并显示刚输入的用户

时间:2014-04-03 16:29:41

标签: forms symfony redirect submit twig

Symfony新手。我已经创建了一个提交表单,我希望它重定向到1)提交成功页面,显示用户刚刚提交的内容; 2)如果输入的字段不正确,则会显示错误页面。但是,当我输入字段并提交时,只需将我带到空白字段的同一页面。

我有我的控制器:

class DefaultController extends Controller
{
    public function indexAction(Request $request)
     {
       $newperson = new Person();       
      $personform = $this->createForm(new PersonType(), $newperson);

    if($this->getRequest()->getMethod() == 'POST') {
        $personform->bind($this->getRequest());
        if($personform->isValid()) {
            $em = $this->getDoctrine()->getManager();
            $em->persist($newperson);
            $em->flush();

        return $this->redirect($this->generateUrl('cir_submitsuccess'));

        }
    }           
    return $this->render('CIRBundle:Default:index.html.twig', array(
        'personform'    => $personform->createView()
    ));             
}

我的routing.yml:

cir_submitsuccess:
pattern: /submit
defaults: { _controller: CIRBundle:Validation:index }

我的index.html.twig:

{% extends '::base.html.twig' %}

{% block body %}

{% if person is defined %}
     <ul>
     {% for person in person %}
        <li>{{person.firstname}} {{person.lastname}} who is {{person.age}} years old and works as a {{person.position}} living in {{person.city}}
     {% endfor %}
     </ul>
     {%endif%}
  <br/>
 {% endblock %}

验证控制器:

class ValidationController extends Controller
{   
public function indexAction() {

     return $this->render('CIRBundle:Validatiion:index.html.twig');     
}   
}

1 个答案:

答案 0 :(得分:0)

如果你提交时,你得到一个空表格,那么似乎验证失败了,你就会再次显示表格。

如果表单有效并且您重定向,那么这将是一个新请求,因此没有任何关于您要显示详细信息的人的信息。您必须在路径中传递一些内容来标识此人,以便您可以从数据库加载其实体并将其传递给模板。