2016-10-03 3 views
1

У меня странная проблема с symfony2. В service.yml я объявил постраничное обслуживание:Пространство имен приложений для Symfony

site.paginate_service: 
class: "Smestaj\SiteBundle\Services\PaginationService" 
arguments: 
    - "@service_container" 

Service выглядит следующим образом:

namespace Smestaj\SiteBundle\Services; 
use Symfony\Component\DependencyInjection\ContainerInterface; 
class PaginationService{ 

protected $cn; 
protected $numberOfData; 

public function __construct(ContainerInterface $container) 
{ 
    $this->cn = $container; 
    $this->numberOfData = $container->getParameter("limit")['adsPerPage']; 
} 

Проблема заключается в том, когда я называю эту услугу в service.yml в другую службу в качестве dependacy инъекции

site.ads_service: 
class: "Smestaj\SiteBundle\Services\AdsService" 
arguments: 
    - "@doctrine.orm.entity_manager" 
    - "@service_container" 
calls: 
    - [setPaginate, ["@site.paginate_service"]] 

затем я получаю это сообщение об ошибке:

Попытка загрузить класс «ServicesaginationService» из пространства имен «Smestaj \ SiteBundle». Вы забыли инструкцию «use» для другого пространства имен?

Итак, из этого сообщения ясно, что symfony пытается назвать класс «ServicesaginationService». Мой класс имеет Smestaj \ SiteBundle \ Services \ PaginationService. Symfony, как-то объединить службы и имя PaginationService и удалить «P» от имени.

Если я меняю название класса на AaaService, тогда все работает нормально.

+0

Попробуйте удалить кавычки из значений класса. –

+0

Его плохая идея, чтобы ввести service_container для обслуживания самого себя. Вам следует вводить только зависимые службы, параметры и т. Д., Но НЕ сервисный контейнер – rokas

ответ

1

При использовании двойных кавычек в имени класса в service.yml, вы должны избежать \, добавив еще один \:

class: "Smestaj\\SiteBundle\\Services\\PaginationService" 

Но лучший способ избежать проблем, это удалить кавычки, как путь будет интерпретироваться как строка с помощью анализатора YML:

class: Smestaj\SiteBundle\Services\PaginationService 
+0

Благодарим за отзыв. Ваш ответ решил мою проблему –

Смежные вопросы