您已请求不存在的服务" Users_Users"。 Symfony3

时间:2017-11-14 09:58:08

标签: php symfony

当我尝试访问我的服务时,出现此错误:

  

您已请求不存在的服务" Users_Users"。

但是命名空间,类的名称,文件的名称,文件夹的名称都可以。我已经复制粘贴名称以确定。

控制器 - >

<?php

namespace UsersBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use UsersBundle\Form\UsersForm;
use Symfony\Component\HttpFoundation\Request;

class UsersController extends Controller
{        
    public function UsersAction($Id)
    {
        $Users = $this->container->get('Users_Users')->ListeUsers($Id);
        return $this->render('UsersBundle:Users:users.html.twig', array('Users' => $Users));
    }

服务:

<?php

namespace UsersBundle\Services;

class Users
{  
    public function __construct($ldap,$Core_ConnexionsBDD,$MySql_ConnexionsBDD, $session)
    {
        $this->ldap = $ldap;
        $this->Core_ConnexionsBDD = $Core_ConnexionsBDD;
        $this->MySql_ConnexionsBDD = $MySql_ConnexionsBDD;
        $this->session = $session;
    }

    public function ListeUsers($Id)
    {  
        $lists = $this->MySql_ConnexionsBDD->getUsers();
        return $lists->Liste($Id); 
    }

}

取消服务文件,没问题,它是

的复制粘贴
  

的get(&#39; Users_Users&#39)

问题出在哪里?我对另外4个包使用相同的方法:/

2 个答案:

答案 0 :(得分:0)

您能否提供服务定义?您知道在yamlxml文件中。

然后,请检查您的服务名称是否Users_Users(在我看来,这是一个奇怪的名字)。

如果您将服务命名为最佳做法鼓励(with the Full Qualified Class Name (FQCN) - &gt; Read):

#app/config/services.yml
services:
    UsersBundle\Services\Users:
        class: Acme\TwitterClient
        arguments: ["@someLdapServiceName", "@Another/Good/Named/Service", "@..."]

然后您的服务将以其名称:

<?php
    $this->get('UsersBundle\Services\Users');

默认情况下,从Symfony 2.8和Symfony v3.3开始,Service autowiring是一个很棒的新功能。您可以使用它来简化服务定义,但需要注意,因为自3.3版本以来,默认服务自动配置带有默认的私有服务:

services: _defaults: public: false

另请注意,在下一个LTS 3.4版本和4.0版本中,默认情况下服务是私有的,不再需要此配置行。

因此,如果您想直接通过容器的get方法访问您的服务,则需要将其添加到Users_Users服务定义中:

services: Users_Users: ... public: true

答案 1 :(得分:0)

在app / config.yml中缺少导入:

   - { resource: "@UsersBundle/Resources/config/services.yml" }

UsersBundle / Resources / config / services.yml的内容:

services:

Users_Users:
    class: UsersBundle\Services\Users
    arguments: ["@Core_ConnexionsBDD","@MySql_ConnexionsBDD","@session"]