如何定义findOneBy($ criteria)函数?

时间:2013-11-26 09:27:50

标签: symfony doctrine-orm

  

我是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.

1 个答案:

答案 0 :(得分:1)

这不是使用Symfony2时处理身份验证的最佳方法。看一下与Symfony2集成的the Security component

请检查How Security Works: Authentication and Authorizationsecurity 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);