2015-08-08 109 views
-2

我在Symfony2中有一个表单显示在Twig模板上。我想知道什么是控制器的业务逻辑,将用户条目保存到数据库中?我尝试了下面的代码,但没有插入到数据库中。非常感谢:)Symfony2:坚持用户输入数据库

/** 
 
    * @Route("/lot", name="sort") 
 
    * @Template() 
 
    */ 
 
    public function bestAction(Request $request) 
 
    { 
 
      $quest = new quest(); 
 
      $form = $this->createForm(new QuestType(), $quest, array(
 
//    'action' => $this->generateUrl('best'), 
 
       'method' => 'POST', 
 
      )); 
 

 
     $form->handleRequest($request); 
 

 
     if($entity->isValid()){ 
 

 
      $em = $this->getDoctrine()->getEntityManager(); 
 
      $entity = $em->getRepository('IWABundle:quest'); 
 

 
      $em->persist($entity); 
 
      $em->flush(); 
 

 
     } 
 

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

{% block form %} 
 
        {{ form_start(form, {'action': path('sort'), 'method':'POST'}) }} 
 
        {{ form_start(form.email) }} 
 
        {{ form_start(form.firstname) }} 
 
        {{ form_start(form.enqiry) }} 
 
        {{ form_end(form) }} 
 
      {% endblock %}

+0

当您使用表单时,您正在填写'$ quest'对象的详细信息,但之后您将获取存储库,然后尝试将其保存到数据库。如果你删除'$ entity = $ em-> getRepository('IWABundle:quest');'而是将'$ quest'对象保存到数据库中。 – qooplmao

回答

0

你的实体($quest)与实体管理器混合起来:

/** 
* @Route("/lot", name="sort") 
* @Template() 
*/ 
public function bestAction(Request $request) 
{ 
    // 1) Create your empty entity 
    $quest = new Quest(); 

    // 2) Create your form from its type and empty entity 
    $form = $this->createForm(new QuestType(), $quest, array(
     'method' => 'POST', 
    )); 

    // 3) Handle the request 
    $form->handleRequest($request); 

    // 4) Check if the form is valid 
    if ($form->isValid()) { 
     // 5) Get the entity manager 
     $em = $this->getDoctrine()->getEntityManager(); 

     // 6) Persist the new entity and flush the changes to the database 
     $em->persist($quest); 
     $em->flush(); 
    } 

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

退房关于how to persist objects to the databasehow to manage form submission的官方文档。