如何使用注释将控制器定义为服务?

2024-03-05

这似乎是使用控制器作为服务的最快、最简单的方法,但我仍然缺少一个步骤,因为它不起作用。

这是我的代码:

控制器/服务:

// Test\TestBundle\Controller\TestController.php

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

/**
 * @Route(service="test_service")
 */
class TestController extends Controller {
  // My actions
}

Use :

// Test\TestBundle\Controller\UseController.php

// ...
public function useAction() {
  $testService = $this->get('test_service');
}

当我这样做时,我收到错误

您请求了一个不存在的服务“test_service”。

当我检查服务列表时app/console container:debug,我没有看到我新创建的服务。

我缺少什么?


From SensioFrameworkExtraBundle 中的控制器即服务 https://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/routing.html#controller-as-service:

控制器类上的 @Route 注释也可用于将控制器类分配给服务,以便控制器解析器通过从 DI 容器获取控制器来实例化控制器,而不是调用 new PostController() 本身:

/**
 * @Route(service="my_post_controller_service")
 */
class PostController
{
    // ...
}

The service注释中的属性只是告诉 Symfony 它应该使用指定的服务,而不是使用实例化控制器new陈述。它本身并不注册服务。

给定您的控制器:

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

/**
 * @Route(service="test_service")
 */
class TestController
{
    public function myAction()
    {
    }
}

您实际上需要将控制器注册为服务test_service id:

services:
    test_service:
        class: Test\TestBundle\Controller\TestController

这种方法的优点是,您可以通过在服务定义中指定依赖项来将依赖项注入到构造函数中,并且不需要扩展基类Controller class.

See 如何将控制器定义为服务 http://symfony.com/doc/current/cookbook/controller/service.html and SensioFrameworkExtraBundle 中的控制器即服务 https://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/routing.html#controller-as-service.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用注释将控制器定义为服务? 的相关文章

  • 如何捕获 Symfony2/Silex 中的错误和异常?

    我想在我的 Silex 应用程序中捕获错误和异常 将它们包装在始终返回给客户端的自定义 JSON 响应中 我发现了三种基本方法 app gt error Symfony Component Debug ErrorHandler regist
  • 作为服务运行时未找到 PowerShell 模块

    我有一个项目 我将 Office 365 许可证分配给用户 有一个 Web 项目允许管理员查看可用许可证并为用户选择许可证 在后台 有一项服务每 15 分钟执行一次实际的许可证分配 以及许多其他任务 我们不直接分配许可证的原因是用户可能尚未
  • 尝试在 android studio 中调试注释处理器最终出现异常

    使用Android Studio 3 1 3 等级3 1 2 使用 5005 端口使用默认配置运行远程构建 and 在 gradle properties 文件中 org gradle daemon false org gradle jvm
  • @UniqueConstraint 和 @Column(unique=true) 选项之间的 Doctrine ORM 级别差异

    在数据库级别 使用一个选项与另一个选项来定义时没有区别独特性如下所示 虽然 UniqueConstraint在其文档中读取 它仅在 SchemaTool 模式生成上下文中有意义 两者之间是否存在 ORM 级别差异 我的意思是 当我们运行查询
  • phpunit --debug 仍然只显示点

    我想查看 phpunit 运行期间当前执行的测试 我用 debugparam 但仍然只得到点 phpunit debug PHPUnit 3 7 19 by Sebastian Bergmann Configuration read fro
  • 如何使用 WSDL 和 XSD 的注释生成 .NET 类

    有一些 XSD 和 WSDL 我想从它们生成 C 代码 我使用了 svcutil exe 但它不会从 XSD 注释生成 XML 注释
  • symfony docker 缓存文件的权限问题

    我有一个带有 docker compose 的 docker symfony 设置 它运行良好 除非我运行缓存 清除Web 服务器可以从控制台访问这些文件 我可以通过取消注释来规避权限问题掩码 0000 在控制台和 web app dev
  • 如何定义/传递 sonata-admin 的实体管理器

    我跟着本教程 http symfony2 ylly fr sonataadminbundle fosuserbundle have a good base project jordscream 使用 FOSUserBundle 安装 Son
  • Twig:如何获取字符串中的第一个字符

    我正在实施按字母顺序搜索 我们显示一个名称表 我只想突出显示那些名称以相应字母开头的字母 我被一个简单的问题难住了 如何读取 twig 中字符串 user name 的第一个字符 我尝试了多种策略 包括 0 操作 但它抛出异常 这是代码 f
  • Symfony 3新建项目报错

    我开始编写有关 Symfony 3 的教程 在使用以下命令创建新项目时遇到问题 php symfony phar new Symfony 我有这个错误 GuzzleHttp Exception RequestException Error
  • 防止 Twig 函数扩展中的输出转义

    我创建了一个 Twig 扩展 image image png 200 嗨 我知道我可以做 image image png 200 raw 但我更喜欢使用 PHP 代码 这样所有内容 来自这个 图像 扩展 都不会被转义 我看不出这可能 我知道
  • Doctrine 装置如何覆盖 purger 类?

    From doctrine fixture bundle the console doctrine fixtures load n命令定义如下 https github com doctrine DoctrineFixturesBundle
  • Symfony 学说错误“DoctrineMigrationsBundle 需要启用 DoctrineBundle。”

    我创建了一个新的 Symfony 项目 并且不断收到此消息 DoctrineMigrationsBundle 需要启用 DoctrineBundle 错误并且无法摆脱它 显然我是这个星球上唯一一个收到此错误的人 因为谷歌并没有太大帮助 在
  • JPA 中的复合键

    我想创建一个具有自动生成的主键的实体 而且还有一个由其他两个字段组成的唯一复合键 我如何在 JPA 中执行此操作 我想这样做是因为主键应该用作另一个表中的外键 并且使其复合并不好 在下面的代码片段中 我需要命令和模型是唯一的 pk当然是主键
  • 如何在 Symfony DateType 字段中设置日期范围?

    我需要在表单中的 dateType 字段的最小和最大日期上设置范围 我的代码在这里 public function buildForm FormBuilderInterface builder array options builder g
  • Doctrine DQL 从 join 返回平面数组

    我通过 DQL 中的常规 LEFT JOIN 选择 3 个实体 它们通过连接表关联 连接表还定义了实体以及带注释的关系 查询执行没有问题 但我的结果作为平面数组返回 我期望一个包含三个实体作为每个索引的数组元素的数组 SELECT e1 e
  • Doctrine make:迁移未知数据库类型

    我正在尝试开始使用 Doctrine 但是在通过创建实体时遇到了问题php bin console make entity 然后我尝试进行迁移php bin console make migration但我收到此错误消息 请求未知的数据库类
  • 发送变量后的 wsdl 服务响应,php

    我是 SOAP WSDL 函数的新手 我有一位客户从一家从事汽车测试的公司获得了 wsdl 文件 我的客户是他们的分包商 他们告诉我们上传有关车牌 类别等信息 一旦详细信息发送完毕 服务器就会做出成功或失败的响应 请您协助 浏览不同的信息
  • 通过 Twig 中的资源包含来自供应商库的 css 和 js 文件

    我想包括css and js将我的供应商目录中的库中的文件复制到 Twig 中 我下载了morrisjs通过 Composer 进入我的 symfony 供应商目录 现在我想包括主要内容css und js文件到我的 Twig 模板中 但据
  • phpstorm xdebug 与 symfony2 项目

    我正在尝试使用 xdebug 和 phpstorm 调试 symfony2 应用程序 我的本地开发环境是Ubuntu 14 04 with apache2 Xdebug版本是2 2 7 我在另一个 php 不是 symfony2 项目上使用

随机推荐

  • 为什么使用 SimpleDateFormat 时出现 ParseException [重复]

    这个问题在这里已经有答案了 我用eclipse写了下面的代码 String d 2014 6 1 21 05 36 SimpleDateFormat sdf new SimpleDateFormat yyyy MM dd HH mm ss
  • MySQL 中的条件内连接语句

    有没有一种方法可以根据另一个表中字段的值有条件地更改我要内部联接的表 这是我到目前为止得到的 但它是错误的 SELECT j jobID j jobNumber CASE WHEN j idType dealership THEN d de
  • GCD:如何更改计时器触发间隔

    无论如何 这听起来可能是一个新手问题 我对 GCD 很陌生 我有以下代码 int interval 2 int leeway 0 dispatch queue t queue dispatch get global queue DISPAT
  • Scrapy 抓取 div 具有多个类?

    我正在尝试使用 产品 类来获取 div 问题是 一些具有 product 类的 div 也具有 product small 类 所以当我使用xpath div class product 它仅捕获具有一个类的 div 而不捕获多个类的 di
  • 使用 PowerShell 对文件进行 AES 加密

    我能够使用此脚本成功对文件进行 AES 加密here https gallery technet microsoft com EncryptDecrypt files use 65e7ae5d file 165403 14 使用 Windo
  • 通过 Python 更改 Konsole 标题

    如何更改 Python 中的 Konsole 标题 我找到了这段代码 gt gt gt import sys gt gt gt sys stdout write x1b 2 test x07 但它仅适用于 Gnome 终端 不适用于 Kon
  • 如何从 C# 执行批处理文件?

    解决方案见文末 我不认为这会很难 我有一个命令文件 da cmd 其中包含 copy b d 7zS sfx d config txt d files 7z d setup exe 但 C 的这些行不会执行它 Process Start d
  • 更改 pdf 和非 Google 文档(EDU 域)的 acl

    我在尝试从 Google Apps 脚本 Google Apps for Education 更改文件所有权时收到此错误 GDataServiceException您尚无法更改该项目的所有者 我们正在努力 相同的代码适用于 Google A
  • 如何在mysql中存储类型可以是数字、日期或字符串的数据

    我们正在开发一个监控系统 在我们的系统中 值是由运行在不同服务器上的代理报告的 报告的观察结果可以是如下值 一个数值 例如 CPU USAGE 55 表示 55 的 CPU 处于使用状态 使用 某些事件被解雇 例如 备份完成 状态 例如SQ
  • PHP 中 preg_replace() 的字符串的最大长度?

    我发现如果我尝试在很长的字符串上使用 preg replace PHP 会向我的浏览器返回一个空页面 而不显示错误消息 我能够在我的测试环境中重现这个错误 preg replace 可以处理的字符串的最大长度是多少 是否可以增加这个长度 对
  • Firestore 查询 - 一对多关系

    我将开发 Android 移动应用程序并使用 Firebase 作为后端 我是 NoSql Firestore 的新手 在我的应用程序中 用户有很多主题 一个主题有很多帖子 帖子有很多评论和一张图片 用户也有很多追随者 在这种情况下 我如何
  • C# 4.0:将动态转换为静态

    这是一个与我问的另一个问题相关的分支问题here https stackoverflow com questions 2783616 net 4 0 dynamic object used statically 我将其分开 因为这实际上是一
  • Visual Studio 第一次启动需要很长时间

    我在 Windows 7 64 位计算机 RAM 为 6 GB 上下载并安装了 Visual Studio 2013 Profession Trial 但是 当我第一次启动它时 它说 我们正在准备就绪 感谢您的耐心等待 它已经持续了大约一个
  • 无框架的 C++ GUI

    据我了解 没有办法让 C GUI 设计器将您的应用程序作为一个独立的可执行文件发布 所有 3rd 方框架都以 dll s 等形式添加依赖项 无论是 MFC Qt WTL wxWidgets GTK 这让我只剩下一种解决方案 使用 Win32
  • 为什么八进制序列 '\0101' 不等于十进制 65?

    考虑这个 C 程序 unsigned char c2 0101 printf c d n c2 c2 我相信输出应该是 A 65但实际输出是1 49 推理 字符常量中以 0 作为前缀 声明为八进制格式 而 101 的八进制值为 65 那么
  • 定时功能

    警告 这有点递归 我回答了这个问题 Python 如何获取列表中最长元素之前的所有元素 https stackoverflow com questions 8740018 pythonhow can i get all the elemen
  • YouTube 分析 API 行为空

    我知道这个问题以前已经被回答过 但我似乎有一个不同的问题 直到几天前 我对 YouTube 的查询从未出现过问题 然而现在 每次我查询任何视频上的数据时 实际视频数据行都会以单个空数组的形式返回 这是我的完整代码 coding utf 8
  • flutter sqlite 事务使用错误警告数据库已被锁定

    我正在开发一个使用 sqlite 和事务的移动应用程序 下面的代码是通过使用sqlite事务保存模型到多个数据库表来从用户那里获取订单信息 Future
  • 如何使用 npm install 和 webpack 来使用 normalize.css?

    我正在将 webpack 与 ReactJS 一起使用 并试图弄清楚如何在 npm 安装后使用 normalize css https necolas github io normalize css https necolas github
  • 如何使用注释将控制器定义为服务?

    这似乎是使用控制器作为服务的最快 最简单的方法 但我仍然缺少一个步骤 因为它不起作用 这是我的代码 控制器 服务 Test TestBundle Controller TestController php use Symfony Bundl