gpt4 book ai didi

symfony - 在 symfony2 Controller 中注入(inject)服务

转载 作者:行者123 更新时间:2023-12-04 10:04:24 25 4
gpt4 key购买 nike

如何将服务(我创建的服务)注入(inject)到我的 Controller 中?
一个 setter 注入(inject)就可以了。

<?php
namespace MyNamespace;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class MyController extends Controller
{
public function setMyService(MyService $myService)
{
$this->myService = $myService;
}

public function indexAction()
{
//Here I cannot access $this->myService;
//Because the setter is not called magically!
}
}

我的路线设置:
// Resources/routing.yml
myController_index:
pattern: /test
defaults: { _controller: "FooBarBundle:MyController:index" }

我将服务设置在另一个包中:
// Resources/services.yml 
parameters:
my.service.class: Path\To\My\Service

services:
my_service:
class: %my.service.class%

解决路由后,不会注入(inject)服务(我知道不应该)。
我想在 yml 文件的某个地方,我必须设置:
    calls:
- [setMyService, [@my_service]]

我没有将此 Controller 用作服务,它是提供请求的常规 Controller 。

编辑:此时,我正在使用 $this->container->get('my_service'); 获得服务但我需要注入(inject)它。

最佳答案

如果你想将服务注入(inject)你的 Controller ,你必须 define controllers as services .

您还可以查看 JMSDiExtraBundle 的 special handling of controllers ——如果这能解决你的问题。但是由于我将 Controller 定义为服务,所以我没有尝试过。

关于symfony - 在 symfony2 Controller 中注入(inject)服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18594581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com