当前位置: 首页 > 知识库问答 >
问题:

非自动接线时捆绑控制器出错

洪宏硕
2023-03-14

Symfony文档指出,公共捆绑包应明确配置其服务,而不依赖于自动连接。因此,我使用下面的配置包来配置控制器服务。

<service id="blah\blah\SecurityController">
    <argument type="service" id="security.authentication_utils"/>
    <tag name="controller.service_arguments"/>
    <tag name="container.service_subscriber"/>
</service>

安全参数是因为我正在使用身份验证Utils-

但是,这样的服务定义会产生弃用错误。用户弃用:自Symfony 4.2以来,弃用“blah\blah\SecurityController”容器的自动注入。将其配置为服务。在 /var/www/html/vendor/symfony/framework-bundle/Controller/ControllerResolver.php:64)

如果我简单地将autowire="true"添加到上面的服务定义中,错误就会消失(此时我也不需要现有的参数)。然而,我想遵循Symfony关于显式配置的建议。

当自动连线设置为真时,我错过了什么需要显式包含的自动注入?

共有1个答案

陶树
2023-03-14

根据反对意见,我假设您的控制器正在扩展AbstractController。

有两种可能的方法可以解决此问题:

>

  • 如果您使用的是AbstractController中的功能,而不是全部,或者只是勉强使用,那么您根本无法扩展任何内容。例如,如果您只使用AbstractController中的一个函数,您可以选择重新实现它以减少依赖关系。官方文件中也提到了这一点。

    如果要继续扩展AbstractController,则需要手动注入容器。例如,像这样:

    服务。xml

    <service id="App\Controller\FooController">
        <call method="setContainer">
            <argument type="service" id="service_container"/>
        </call>
    </service>
    

    食品控制员。php

    class FooController extends AbstractController {}
    

  •  类似资料:
    • 问题内容: 我正在尝试通过Bundler 安装gem,但是它一直死于以下错误: 我通过谷歌搜索发现的大多数事情都建议传递参数来修复它。因此,基于: 我将以下内容添加到Bundler的配置中: 但是,仍然没有运气-与上述相同。 因为它快死于错误了,所以我检查了一下,并且据说它在附近,只是Bundler找不到。 有什么想法吗? 问题答案: 答案与Wrikken发布的答案相似-这是我为将来的读者而修复的

    • 我试图在我的Mac上安装Bundler宝石。使用命令:我得到以下错误: 这显然是一个服务器问题,但我该如何着手解决这个问题呢<代码>gem更新--系统当前是最新的。是否有其他方式获得Bundler?

    • 我有一个名为ReportController的控制器,它可以成功地访问存储库中的数据。我在另一个处理WebSocket消息的类中自动连接了该类,因为我还想在数据库之间发送WebSocket消息。然而,问题是,当我在SocketHandler类中自动连接控制器类并从那里调用方法时,它会给出一个空指针异常。我已经用@组件或@服务注释了控制器,但没有成功。我的课程如下 我的控制器类 和我的套接字处理程序

    • 我正在我的一个项目中使用自动装配。在控制器中运行良好,但我需要在其他类中使用相同的自动装配对象,该类用作石英的任务类。自动装配在那里不起作用。 我尝试了下面列出的这段代码,但没有成功。在所有尝试中,它都为获取。 请提出解决方案,谢谢。

    • 我已经在应用程序中添加了一个sqlite文件,并试图将其从bundle复制到documents目录。我还将sqlite添加到了target应用程序中。下面是我用来复制文件的代码: 的代码: Error domain=nscocoaerrordomain code=4“文件”myapp.sqlite“不存在。”userInfo={nsSourceFilePatherRokey=/users/hari

    • 我编写了一个定制的NiFi处理器,它使用一些Hadoop类,处理流文件,并在Avro之间序列化流文件。 处理器的pom.xml文件如下所示: 因为我已经将标记为,所以它不会绑定在生成的NAR文件中。现在,我可以做一个快速修复,完全删除作用域并创建NAR,但NiFi会抱怨next class not found错误。 我想知道: