我有一个用 Symfony2 和 FOSRestBundle 构建的 REST API。这一切都很好,但是在一个服务中,我将来自另一个服务的数据组合在不同的捆绑包中——这看起来很简单,但事实并非如此。
我正在创建一个新的请求对象并添加我的参数,从那里我向另一个服务发出请求,服务接收到请求很好,但是,当我尝试使用 $this->get 它给了我很好的旧Call to a member function get() on a non-object in ...
我知道我缺少服务容器(我不完全理解为什么当我调用第一个包而不是第二个包时它可用),这一切都很好,但是我如何注入它或它的一个组件所以我可以使用$this->get
在 services.yml 中定义的自定义服务吗?(很容易通过他们使用的服务容器arguments:
container: "@service_container"
)
将此捆绑包设置为服务将不起作用,因为 FOSRestBundle 不会将其称为服务。
简而言之:我希望能够在 bundle1 中通过执行从 bundle2 获取数据
namespace MyVendor\Bundle1\Controller
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use MyVendor\Bundle2\Controller\Bundle2ClassName;
class Bundle1 {
//if i wanted to do this here it would work fine:
// $this->get('my.service.defined.in.service.yml');
$bundle2 = new Bundle2ClassName();
$returned_data = $bundle2->myFunction();
}
然后,一旦进入 bundle2 中的 myFunction,如果我尝试调用完全相同的服务函数,我就会得到可怕的 get 错误。如果我直接通过 FOSRest 路由调用 bundle2,我显然没有这个问题。
namespace MyVendor\Bundle2\Controller
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class Bundle2 {
//this does not work
$this->get('my.service.defined.in.service.yml');
//do some stuff then return response
return($response);
}
我一遍又一遍地阅读了所有服务容器文档,所以如果你要链接到它们,如果你能指出它解释如何处理这些东西的确切部分,我将不胜感激。这是我几个月前开始使用 Symfony 以来一直无法完全理解的一个问题。
PS 有足够积分的人可以将 FOSRestBundle 添加为标签吗?
谢谢!