【问题标题】:How to display alert or info messages in Symfony2 after a server response without reloading the page如何在服务器响应后在 Symfony2 中显示警报或信息消息而不重新加载页面
【发布时间】:2014-10-27 00:33:07
【问题描述】:

我正在使用 Symfony2 为配镜师构建一个管理应用程序。当管理员向数据库添加新客户时,我的控制器会检查客户名称是否重复。我想显示一个弹出对话框,询问用户是否要添加新客户。我该如何实施?我应该使用 Ajax 吗?这是我在这种情况下使用的控制器的示例代码:

public function nouveauAction(Request $request)
{
    $form = $this->createFormBuilder()
        ->add('nom','text')
        ->add('tel','text', array('label' => 'Nº de téléphone', 'data' => '06'))
        ->add('email','email', array('label' => 'E-mail', 'required' => false))
        ->add('date','date', array('label' => 'Date d\'ajout', 'data' => new \DateTime()))
        ->add('ajouter','submit')
        ->getForm()
    ;

    $form->handleRequest($request);

    if ($form->isValid()){

        $client = new Client();
        $client->setNomClient($form["nom"]->getData());
        $client->setTelClient($form["tel"]->getData());
        $client->setEmailClient($form["email"]->getData());
        $client->setDateEditionClient($form["date"]->getData());
        //just for now (Later we'll retrieve the username from the session)
        $em = $this->getDoctrine()->getEntityManager();
        $user = (new Utilisateur)->rechercherParPseudo($em, 'admin');
        $client->setIdUtilisateur($user);

        $em = $this->getDoctrine()->getEntityManager();

        if($client->existe($em))
        {
            //I need a popup message here : The customer you are trying to add already exists""
        }

        else
        {
            $request = $this->container->get('request');
            if($client->existeNomDouble($em)) //If the customer name is duplicate
            {
                //I need a popup message here with Yes/No buttons...
            }
            else
            {
                //Writing to the database:
                $em = $this->getDoctrine()->getEntityManager();
                $client->ajouterClient($em);

                //A notification to fade in here : "Customer successfully added"
            }


        }

    }

    return $this->render('ClientBundle:Client:nouveau.html.twig', array(
        'formAjouter' => $form->createView(),
    ));
}

【问题讨论】:

    标签: javascript php jquery ajax symfony


    【解决方案1】:

    您是否在问是否应该在单击按钮后使用 ajax 来显示弹出窗口?如果是这样,我会建议使用 ajax。这是我之前在 symfony 中使用过的 Bootstrap 库,它应该可以派上用场:http://vitalets.github.io/x-editable/

    【讨论】:

      【解决方案2】:

      试试这个:

      控制器端:

       $this->get('session')->getFlashBag()->add(
              'notice',
              'Customer Added!'
          );
      

      查看侧(树枝):

      {% for flashMessage in app.session.flashbag.get('notice') %}
      
      <div class="alert alert-success">
          {{ flashMessage }}
      </div>
      
      {% endfor %}
      

      【讨论】:

      • FlashBag 工作正常,我将在
        中添加一些选择按钮,以便我可以从控制器触发操作。谢谢圣战。
      猜你喜欢
      • 1970-01-01
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多