Appel à un membre de la fonction a() sur la valeur null symfony2
J'ai 5 classe Categoria, Produto, Subcategoria, Subproduto et Comanda et pour exécuter la recherche dans toutes les classes, j'ai essayer d'en faire un service comme:
espace de noms AppBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; classe AccessClassController extends Controller{ /** * Retorna todas comme categorias ativas */ fonction publique CategoriasAtivasAction() { $em = $this->getDoctrine()->getManager(); $categorias = $em->getRepository('AppBundle:Categoria')->findByAtivo(1); return $categorias; } }
Et j'essaie d'accéder au service sur ComandaController
classe ComandaController s'étend Contrôleur { ... public function newAction(Request $request, $id) { $comanda = new Comanda(); $categorias = $this->get('categorias.ativas')->CategoriasAtivasAction(); ...
Puis symfony retour d'erreur
Call to a member function has() on null
500 Internal Server Error - FatalThrowableError
Mes services.yml a
services: categorias.ativas: catégorie: AppBundle\Controller\AccessClassController
Quoi de mal?
- Vous ne pouvez pas utiliser un Contrôleur (extension de Contrôleur) en tant que service.
- En fait, vous pouvez aussi longtemps que vous injecter le conteneur. N'a pas beaucoup de sens de le faire. Et dans ce cas, c'est le ComandaController qui est bbeing créé quelque part, sans le conteneur. D'où l'erreur.
Vous devez vous connecter pour publier un commentaire.
Conformément à la documentation Symfony, Définir des contrôleurs en tant que services n'est pas recommandée officiellement par Symfony. Même si vous avez besoin d'utiliser, vous pouvez le faire. Que par votre code, vous n'avez pas transmis de service objet conteneur dans le service. Merci de faire les modifications suivantes et essayez de.
Dans vos services.fichier yml
Et dans votre AccessClassController fichier