我正在尝试将我的服务(在其他包中定义)传递给控制器,控制器被定义为服务但在承包商中变为空。 我知道我们可以通过传递service_container来完成它,但需要知道我是否只能将特定服务传递给控制器。
答案 0 :(得分:0)
如果名称是唯一的,这里没问题。
namespace Yourapp\OneBundle\Controller;
class OneController extends Controller
{
public function oneAction()
{
$otherControllerManager = $this->get('youappOtherbundle.the_manager');
}
}
编辑:好吧,在我看来,你可以扩展控制器,即使它是一个控制器作为服务。 为什么不像往常一样“传输”您所需的服务?
在您的services.yml
中OneController.controller.service:
class: Yourapp\OneBundle\Controller\OneController
arguments: ["@templating", "@router"]
在您的控制器中:
public function __construct(EngineInterface $templating, UrlGeneratorInterface $router)
{
$this->templating = $templating;
$this->router = $router;
}