Symfony2 - Comment utiliser le __construct() dans un Contrôleur d'accès et Instaler.Contexte?

Je vais avoir quelques problèmes avec Symfony2. À savoir sur la façon d'utiliser le __construct() fonction. la Documentation Officielle est terriblement mauvais!

Je veux être en mesure d'utiliser les éléments suivants:

public function __construct()
{
    parent::__construct();
    $user = $this->get('security.context')->getToken()->getUser();
}

Comment jamais, j'obtiens l'erreur suivante:

Erreur fatale: Impossible d'appeler un constructeur dans /Sites/src/DEMO/DemoBundle/Controller/Frontend/HomeController.php sur la ligne 11

La ligne 11 est "parent::__construct();"

Je l'ai enlevé et le suivant, nouvelle erreur

Erreur fatale: Appel à un membre de la fonction get() sur un non-objet dans /Sites/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php sur la ligne 242

Je pense je pourrais avoir besoin pour configurer le ContainerInterface DIC, mais je n'ai aucune idée de comment faire (j'ai essayé et échoué, lamentablement)

Les idées sont les bienvenues?

Mise à jour - Essayé de changer de prolonger ContainerAware et eu cette erreur:

Fatal error: Class DEMO\DemoBundle\Controller\Frontend\HomeController ne peut pas s'étendre à partir de l'interface de Symfony\Component\DependencyInjection\ContainerAwareInterface dans /Sites/src/DEMO/DemoBundle/Controller/Frontend/HomeController.php sur la ligne 43

En utilisant le code suivant dans le contrôleur:

<?php

namespace DEMO\DemoBundle\Controller\Frontend;

use Symfony\Component\DependencyInjection\ContainerAware;

class HomeController extends ContainerAwareInterface
{
     protected $container;

     public function setContainer(ContainerInterface $container = null)
     {
         $this->container = $container;
     }
  • Je pense que vous ne pouvez pas accéder à conteneur __construct.
  • Pourquoi ne pas simplement d'injecter de l'utilisateur exemple comme argument dans le constructeur?
  • Nanocom - vous dire "simplement", mais je suis assez nouveau à Symfony2. J'ai essayé de trouver un travail décent de la documentation sur les Auditeurs et les Services de l'Officiel docs il suffit de ne pas très bien l'expliquer à mon humble avis.
  • cela semble assez clair: symfony.com/doc/current/book/service_container.html - vous pouvez élargir sur ce qu'il est que vous voulez réaliser?
  • Je veux être en mesure d'utiliser __construct() ou une fonction similaire, pour me permettre de définir quelques variables, je peux ré-utiliser dans mon contrôleur. Dans CodeIgniter2 je peux utiliser le __construct pas de problèmes, mais Symfony2 est tout à fait différent et je dois prendre environ 20 étapes pour obtenir quelque chose de si simple exécutant (ou pas comme c'est le cas)
  • juste injecter du conteneur dans le constructeur au lieu d'utiliser ContainerAware. (À définir votre appareil en tant que service).
  • Aussi, le Contrôleur de base vous êtes l'extension n' pas dispose d'un constructeur, de logique, il hurle à vous, il ne peut pas l'appeler.
  • Vous souhaitez aussi utiliser le mot-clé "instruments" au lieu de "s'étend". Classe sont étendues, les interfaces sont implémentées.

InformationsquelleAutor Mr Pablo | 2012-03-16