Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]Automatic Service Loading
Forum PHP.pl > Forum > PHP > Frameworki
Lirdoner
Cześć, mam problem z automatycznym ładowaniem serwisu. Zgodnie z dokumentacją: http://symfony.com/doc/current/service_container.html wystarczy, że utworzę klasę i nie muszę jej już nigdzie konfigurować. No więc zrobiłem klasę:
  1. <?php
  2.  
  3. namespace AppBundle\Model;
  4.  
  5. use Doctrine\ORM\EntityManagerInterface;
  6.  
  7. class CurrencyManager
  8. {
  9. const NBP_API_URL = 'http://api.nbp.pl/api/exchangerates/rates/{table}/{code}/';
  10.  
  11. private $em;
  12.  
  13. public function __construct(EntityManagerInterface $em)
  14. {
  15. $this->em = $em;
  16. }
  17. }

Jednak robią w kontrolerze
  1. $this->get(CurrencyManager::class)

Dostaję błąd
Kod
You have requested a non-existent service "AppBundle\Model\CurrencyManager".

services.yml:
Kod
parameters:
    #parameter_name: value

services:
    _defaults:
        autowire: true
        autoconfigure: true
        public: false

    AppBundle\:
        resource: '../../src/AppBundle/*'
        exclude: '../../src/AppBundle/{Entity,Repository,Tests}'

    AppBundle\Controller\:
        resource: '../../src/AppBundle/Controller'
        public: true
        tags: ['controller.service_arguments']
pyro
To przez to, że przy defaultsach masz:

Kod
public: false


Polecam także całkowicie zrezygnować z autowiring i autoconfigure. Twórcy Symfony w nowej wersji chcieli na siłę coś dodać niby innowacyjnego (co ponoć ma przyśpieszać pracę), ale cały ten pomysł jest po prostu szkaradny od strony architektonicznej i rodzący wiele problemów.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.