当我尝试访问我的服务时,出现此错误:
您已请求不存在的服务" 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个包使用相同的方法:/
答案 0 :(得分:0)
您能否提供服务定义?您知道在yaml
或xml
文件中。
然后,请检查您的服务名称是否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"]