Symfony两个编辑操作(激活/停用)一个正在工作,另一个不起作用

时间:2017-03-18 19:37:39

标签: symfony

我有两个操作来编辑实体'用户'属性' etat' :activateAction使得' etat'如果它等于0则等于1,否则它返回一个flashbag消息'该帐户已被激活',并且desactivateAction应该反其道而行,但它不起作用!以下是激活和停用操作的代码:

/**
     * @Route("/admin/gestEtat/act/{iduser}", name="act")
     *
     * @Template()
     */
    public function activateAction($iduser)
    {
        $user=new user();
         $em=$this->getDoctrine()->getManager();
         $repository = $em->getRepository("CNAMCMSBundle:user");
         $user = $repository->find($iduser);
               if($user)
               {
                   if ($user->getEtat()==1) {
                       $this->get("session")->getFlashBag()->add('act',"Ce compte est déjà activé!");
                       return $this->redirectToRoute('gestEtat',
                           array());
                   }
                   elseif ($user->getEtat()==0) {
                       $user->setEtat('1');
                       $em->merge($user);
                       $em->flush();
                       return $this->redirectToRoute('gestEtat',
                           array());
                   }
               }
    }
    /**
     * @Route("/admin/gestEtat/desact/{id}",name="desact")
     *
     * @Template()
     */
    public function desactivateAction($id)
    {
        $user=new user();
        $em=$this->getDoctrine()->getManager();
        $repository = $em->getRepository("CNAMCMSBundle:user");
        $user = $repository->find($id);
        //$session = new Session();
        //$session->start();
        //$users=$session->get('users_table');

        if($user)
        {
            if ($user->getEtat()==0) {
                $this->get("session")->getFlashBag()->add('desact',"Ce compte est déjà désactivé!");
               // return $this->render('CNAMCMSBundle:Default:gestEtat.html.twig',
                return $this->redirectToRoute('gestEtat',
                    array());
            }
            elseif ($user->getEtat()==1) {
                $user->setEtat('0');
                $em->merge($user);
                $em->flush();
               // return $this->render('CNAMCMSBundle:Default:gestEtat.html.twig',
                return $this->redirectToRoute('gestEtat',
                    array());
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

通过传入字符串' 0',好像您正在执行setEtat('0')。如果实体变量是布尔值,则应将其作为(true / false)或(1/0)发送。如果是字符串,则应检入代码elseif (getEtat()=='1')

它的方式,检查if (getEtat()==1)将与if (getEtat())相同,如果getEtat()未显式为false / null布尔值或空变量,则返回true。 / p>