Search code examples
classsymfonydoctrineinstanceentitymanager

How to instance doctrine entity manager in a symfony2 class


I am new with Symfony 2 and Doctrine.

I have created a new class on my symfony project, which is located in:

project_folder/src/Libraries/Validarcontenido/Validarcontenido.php

I need to get the Doctrine Entity Manager instance in this class.

I have reading docs about it, and everyone says that i must add the class into the services.yml file, but didn't work.

Here is my code:

<?php

namespace Libraries\Validarcontenido;

use AdminBundle\Entity\Aportes;

use Doctrine\ORM\EntityManager;
use Symfony\Component\HttpFoundation\Request;

class Validarcontenido
{
    private $request, $post, $em;

    public function __construct()
    {
        $this->request = Request::createFromGlobals();
        $this->post = $this->request->request->all();

        // gets doctrine instance
        $this->em = $this->getContainer()->get('doctrine');
    }

}

And the services.yml:

# Learn more about services, parameters and containers at
# http://symfony.com/doc/current/book/service_container.html
parameters:
#    parameter_name: value

services:
    validarcontenido.service:
        class: Libraries\Validarcontenido\Validarcontenido
        arguments: [@doctrine.orm.entity_manager]

But Symfony returns me this error message:

 Attempted to call an undefined method named "getContainer" of class "Libraries\Validarcontenido\Validarcontenido".
500 Internal Server Error - UndefinedMethodException 

What i am doing wrong? Thank you so much.


Solution

  • Ok, the problem was that when i create the service instance in the controller i used this:

    $my_class = new My_class();
    

    And now i know that i have to use this:

    $my_class = $this->get('service_name');
    

    Thank you so much!