Swass
Swass

Reputation: 310

How to define findOneBy($criteria) function?

I am very new to Symfony2, designing a simple login system. The userclass, router, controlerclass everything is working fine. I am stuck to userRepository class.

My controller part is:

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.

Upvotes: 0

Views: 483

Answers (1)

Ahmed Siouani
Ahmed Siouani

Reputation: 13891

This is not the best way to handle authentication when using Symfony2. Take a look at the Security component integrated with Symfony2.

So check How Security Works: Authentication and Authorization part of the security documentation, all you need to implement/configure is Firewalls to handle Authentication and Access Controls for Authorization.

But ...

Here's an answer to the common question: How to a define findOneBy(parameter1, parameter2) function for a given repository class?

First, map your entity to the appropriate repository as follow,

/*
 * @ORM\Entity(repositoryClass="YourNamespace\YourBundle\Entity\yourRepository")
 */
class YourEntity
{
    // ...
}

You should then add the mapped repository class and implement a findOneBy(parameter1, parameter2) method.

You can then access this class within your controller as follow,

    $em= $this->getDoctrine()->getManager();
    $yourEntityInstance = $em->getRepository("yourNamespaceYourBundle:YourEntity")
               ->findOneBy($parameter1, $parameter2);

Upvotes: 1

Related Questions