2015-08-05 2 views
2

Je veux mettre à jour find UserId lorsque le bouton est cliqué. Par exemple, supposons qu'un nom d'utilisateur "Dell" ait un "UserId" "111", donc lorsque le bouton cliqué dans doit sélectionner l'utilisateur et faire d'autres actions.obtenir UserId lorsque le bouton est cliqué

C'est pourquoi j'utilise "$ _POST", donc quand l'utilisateur clique sur le bouton, il retourne le "UserId".

Voici comment j'essaie d'obtenir le "UserId".

$usrInfo = $this->getDoctrine() 
         ->getRepository('myBundle:UserStats') 
         ->findByUserId($_POST); 

Mais je pense que je le fais mal, car il ne fonctionne pas lorsque l'utilisateur clique sur le bouton.

et sur la base UserId, je vais mettre à jour des informations telles que ---

$ usrst = new UserStats();

$providerStats->setOn(FALSE); 

    $em = $this->getDoctrine()->getManager(); 
    $em->persist($usrInfo); 
    $em->flush(); 

donc à nouveau le but principal sera de trouver le UserId quand un bouton est cliqué . Est-ce que quelqu'un sait sait comment résoudre ce problème. Merci d'avance.

+0

Recevez-vous l'ID d'utilisateur avant que le formulaire est soumis? Eh bien, vous devez d'abord aller chercher l'utilisateur avant l'appel de mise à jour. – Noman

+0

@Noman oui je reçois l'utilisateur et l'UserId à la fois, mais le seul problème que j'ai est la méthode "POST" –

+0

Hey, vous n'avez pas utilisé $ usrst = new UserStats(); car il est utilisé pour ajouter une nouvelle entrée dans la base de données. Si vous devez mettre à jour l'enregistrement, vous devez créer un objet avec la fonction find ($ id) et définir la valeur dont vous avez besoin. Et pourquoi utilisez-vous $ providerStats-> setOn (FALSE); vous n'avez pas fait d'objet avec $ providerStats donc ça n'affecte rien. –

Répondre

1

vous pouvez l'essayer comme ça (je suppose que vous utilisez le composant formulaire, il serait préférable si vous postez votre formulaire):

... 

public function someAction(Request $request) 
{ 
    .... 
    $form = $this->createForm(TYPE, NULL_OR_DATA, OPTIONS); 
    $form->handleRequest($request); 
    if ($form->isValid()) { 
     $username = $form->get('USERNAME_FIELD')->getData(); 

     $user = (SOMESERVICE_OR_REPOSITORY)->getUserByUsername($username); 

     // do something here with your user 

     // Flush the changes 

     .... 
    } 

    .... 
} 
0

Avec Symfony 2, vous ne devez pas utiliser la variable php $ _POST mais $ demande

exemple, si votre nom de domaine est "UserId":

$request = $this->getRequest(); 

if ($request->getMethod() == 'POST') { 
    $userId= $request->request->get('UserId'); 

    $usrname = $this->getDoctrine() 
          ->getRepository('myBundle:UserStats') 
          ->findByUserId($userId); 
} 
+0

Désolé, cela ne résout pas mon problème, avez-vous une autre solution? –

+0

Pourriez-vous poster votre méthode complète, ce sera plus facile! –

+0

J'ai mis à jour ma question, pouvez-vous y jeter un oeil :) –

0

J'ai donné le code de mise à jour l'enregistrement dans Symfony2:

$request = $this->get('request'); 
$em = $this->getDoctrine()->getManager(); 
if ($request->getMethod() == 'POST') { 
    $user_id = $request->request->get('user_id'); 
    $obj = $em->getRepository('myBundle:UserStats')->find($user_id); 
    $em->persist($obj); 
    $em->flush(); 
} 
+0

peut-être que je ne l'ai pas bien expliqué, j'ai besoin de trouver le "UserId" lorsque le bouton clique, c'est tout! –

+0

J'ai mis à jour ma question, pouvez-vous jeter un oeil :) –