我有两个操作来编辑实体'用户'属性' 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());
}
}
}
答案 0 :(得分:1)
通过传入字符串' 0',好像您正在执行setEtat('0')
。如果实体变量是布尔值,则应将其作为(true / false)或(1/0)发送。如果是字符串,则应检入代码elseif (getEtat()=='1')
它的方式,检查if (getEtat()==1)
将与if (getEtat())
相同,如果getEtat()
未显式为false / null布尔值或空变量,则返回true。 / p>