FatalErrorException: Erreur: Appel à un membre de la fonction a() sur un non-objet

J'ai lu beaucoup de sujets sur ce sujet et je n'arrive pas à trouver une solution à mon problème.

Je crois que le problème est évident et j'ai peut-être juste le regardant fixement trop longtemps.

L'erreur est FatalErrorException: Erreur: Appel à un membre de la fonction a() sur un non-objet dans /vagrant/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php la ligne 198

En regardant la ligne d'erreur, dit-il.

public function getDoctrine()
    {
        if (!$this->container->has('doctrine')) {
            throw new \LogicException('The DoctrineBundle is not registered in your application.');
        }

        return $this->container->get('doctrine');
    }

Voici mon code...

C'est le contrôleur principal qui est de l'appel de la DAO Contrôleur

public function clickThroughAction(request $request, $hash)
    {
        if (isset($hash)) {
            $dbController = $this->get('database_controller');
            print_r($dbController->getReferralIdByHash($hash));
            return $this->redirect($this->generateUrl('home'));
        } else {
            return 0;

        }
    }

C'est le service qui est utilisé.

services:
    database_controller:
        class:  Fuel\FormBundle\Controller\DatabaseController

C'est le dao contrôleur qui est de l'appel de la base de données.

public function getReferralIdByHash($hash)
    {
        $em = $this->getDoctrine()->getManager();
        $query = $em->createQuery(
            'Select u From FuelFormBundle:UserReferrals u WHERE u.user_hash = :hash'
        )->setParameter('hash', $hash);

        $referral = $query->getResult();

        if (!$referral) {
            throw $this->createNotFoundException(
                'No product referral found'
            );
            $logger = $this->get('logger');
            $logger->info('I just got the logger');
            $logger->crit('An error occurred, hash for referrals is not recognized. current hash is: ' . $hash . " .");
            return $this->redirect($this->generateUrl('home'));
        }

        $clickThroughCount = $referral[0]->getClickThrough();
        $referral[0]->setClickThrough($clickThroughCount + 1);
        $em->flush();
        return $referral;
    }

Je pense que le problème est que la doctrine que le conteneur n'est pas présent, ce qui est pourquoi je suis d'avoir des problèmes. Je ne suis pas sûr de la façon de résoudre ce problème.

Toute aide est appréciée. Merci!

Modifier


Ok, donc voici ce que j'ai changé.

Contrôleur principal est restée la même.

DAO Contrôleur un couple de choses ont été ajoutées.

class DatabaseController extends Controller{
    protected  $entityManager;

    public function __construct($entityManager) {
        $this->entityManager = $entityManager;
    }
public function getReferralIdByHash($hash)
    {
        $em = $this->entityManager;
        $query = $em->createQuery(
            'Select u From FuelFormBundle:UserReferrals u WHERE u.user_hash = :hash'
        )->setParameter('hash', $hash);

        $referral = $query->getResult();

        if (!$referral) {
            throw $this->createNotFoundException(
                'No product referral found'
            );
            $logger = $this->get('logger');
            $logger->info('I just got the logger');
            $logger->crit('An error occurred, hash for referrals is not recognized. current hash is: ' . $hash . " .");
            return $this->redirect($this->generateUrl('home'));
        }

        $clickThroughCount = $referral[0]->getClickThrough();
        $referral[0]->setClickThrough($clickThroughCount + 1);
        $em->flush();
        return $referral;
    }
}

Service fini par ressembler à ce

services:
     database_controller:
          class:  Fuel\FormBundle\Controller\DatabaseController
          arguments: ["@doctrine.orm.entity_manager"]
Ce qui est var_dump($this->container) spectacle? Le message d'erreur fondamentalement prouve qu'il ne sera pas un objet, afin de voir ce qu'il est vraiment à ce point.
Il retourne NULL
Où est $this->container ensemble? Il me semble que le problème est plus probable.
Je suppose que c'est ce qui me manque, mais je ne comprends toujours pas ce que je suis absent. J'ai lu la documentation mais il est déconnecter, et je suis en manque de quelque chose.
Je suppose que en général j'ai du mal à saisir l'Injection de Dépendance. J'ai lu à travers Symfonys documentation et quand j'ai fini je viens de secouer ma tête.

OriginalL'auteur B Rad | 2013-10-09