我是Symfony2的新手,设计一个简单的登录系统。用户类, 路由器,controlerclass一切正常。我坚持了 userRepository类。
我的控制器部分是:
public function loginProcessAction(Request $request){
if($request->getMethod() == "POST") {
$username = $request->get('username');
$password = $request->get('password');
$em= $this->getDoctrine()->getEntityManager();
$repository = $em->getRepository("LoginLoginBundle:Student");
$user = $repository->findOneBy(array('username'=>$username,
'password'=>$password));
if($user){
return $this->render('loginSuccess twig page') ;
}
else{
return $this->render('error twig page') ;
}
} else{
return $this->render("login error page");
}
}
How to define findOneBy(username, password) function in reopository class.
答案 0 :(得分:1)
这不是使用Symfony2时处理身份验证的最佳方法。看一下与Symfony2集成的the Security component。
请检查How Security Works: Authentication and Authorization的security documentation部分,您需要实现/配置的所有内容为Firewalls来处理身份验证和 授权Access Controls。
但......
以下是常见问题的答案:如何为给定的存储库类定义findOneBy(parameter1,parameter2)函数?
首先,将您的实体映射到相应的存储库,如下所示,
/*
* @ORM\Entity(repositoryClass="YourNamespace\YourBundle\Entity\yourRepository")
*/
class YourEntity
{
// ...
}
然后,您应该添加映射的存储库类并实现findOneBy(parameter1, parameter2)
方法。
然后,您可以在控制器中访问此类,如下所示
$em= $this->getDoctrine()->getManager();
$yourEntityInstance = $em->getRepository("yourNamespaceYourBundle:YourEntity")
->findOneBy($parameter1, $parameter2);