简体   繁体   中英

How to display alert or info messages in Symfony2 after a server response without reloading the page

I am building an admin application for opticians with Symfony2. When the admin adds a new customer to the database, my controller checks if the customer name is duplicate or not. I want to display a popup dialog that asks the user if he wants to add the new customer anyway or not. How can I implement this? Should I use Ajax? Here is a sample code from the controller I am using in this case :

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(),
    ));
}

Try this :

Controller Side :

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

View Side (Twig) :

{% for flashMessage in app.session.flashbag.get('notice') %}

<div class="alert alert-success">
    {{ flashMessage }}
</div>

{% endfor %}

Are you asking if you should use ajax for displaying the popup after a button has been clicked? If so, I would recommend using ajax. Here is a Bootstrap library I have used before in symfony that should come in handy for this: http://vitalets.github.io/x-editable/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM