Symfony2:如何从存储库访问服务

2023-11-25

我有 ModelsRepository 类:

class ModelsRepository extends EntityRepository
{}

和服务

container_data:
 class:        ProjectName\MyBundle\Common\Container
 arguments:    [@service_container]

我想从 ModelsRepository 访问服务 container_data。我无法从控制器使用的构造函数传输服务。

你知道该怎么做吗?


恕我直言,这不需要,因为你可能很容易违反类似的规则SRP and 得墨忒耳定律

但如果您确实需要它,可以使用以下方法:

首先,我们定义一个基类“ContainerAwareRepository”,它有一个调用“setContainer”

services.yml

services:
    # This is the base class for any repository which need to access container
    acme_bundle.repository.container_aware:
        class: AcmeBundle\Repository\ContainerAwareRepository
        abstract: true
        calls:
            - [ setContainer, [ @service_container ] ]

ContainerAwareRepository 可能看起来像这样

AcmeBundle\Repository\ContainerAwareRepository.php

abstract class ContainerAwareRepository extends EntityRepository
{
    protected $container;

    public function setContainer(ContainerInterface $container)
    {
        $this->container = $container;
    }
}

然后,我们可以定义我们的模型存储库。
我们在这里使用的学说getRepository方法来构建我们的存储库

services.yml

services:
    acme_bundle.models.repository:
        class: AcmeBundle\Repository\ModelsRepository
        factory_service: doctrine.orm.entity_manager
        factory_method:  getRepository
        arguments:
            - "AcmeBundle:Models"
        parent:
            acme_bundle.repository.container_aware

然后,只需定义类

AcmeBundle\Repository\ModelsRepository.php

class ModelsRepository extends ContainerAwareRepository
{
    public function findFoo()
    {
        $this->container->get('fooservice');
    }
}

为了使用存储库,您绝对需要首先从服务中调用它。

$container->get('acme_bundle.models.repository')->findFoo(); // No errors
$em->getRepository('AcmeBundle:Models')->findFoo(); // No errors

但如果你直接这样做

$em->getRepository('AcmeBundle:Models')->findFoo(); // Fatal error, container is undefined
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony2:如何从存储库访问服务 的相关文章

  • 如何从页面获取所有网址(php)

    我有一个页面 其中的网址和描述逐一列出 例如书签 网站列表 如何使用php从该页面获取所有url并将它们写入txt文件 每行一个 只有url而没有描述 页面如下所示 一些描述 http link com 其他说明 http link2 co
  • 证明字符串算法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Laravel 中的 SQL 运算符是什么?

    我正在查看 Laravel 的源代码 发现了很多 Eloquent 的 SQL 运算符 我想知道其中一些是什么以及如何使用它们 不幸的是我没有找到任何文档 这是我找到的运营商vendor laravel framework src Illu
  • PHP runkit_function_rename 不起作用?

    这段代码不起作用 为什么不 我真正想要的是这个 我正在使用一个具有功能的系统 当我在本地主机上时 我希望该函数做一些不同的事情 我想用自己的东西覆盖该函数 也欢迎所有替代方案 您是否安装了 PECL 扩展 http www php net
  • PDF:在现有 PDF 文件中插入一行文本

    我有一个 PDF 文件 我希望在所有页面 前两页除外 的页脚上添加一行纯文本 不是徽标或类似内容 有谁有一个如何做到这一点的例子 用任何语言 Update 原始 PDF 是用 Scribus 制作的 我可以完全控制它 因此 如果更容易进行查
  • 检测图像是否损坏或损坏

    我需要以编程方式检查用户在我的应用程序上选择作为壁纸的图像是否已损坏或损坏 基本上我为用户提供了选择自己的图像作为壁纸的选项 现在 当图像加载时 我只想检查它是否已损坏 如果您正在寻找 PHP 解决方案而不是 javascript 解决方案
  • 是什么阻止密码被注入的 Symfony 服务 (FOSUserBundle) 重新哈希

    这是我的后续问题原问题 https stackoverflow com questions 36681622 how to access the user token in an injected service to reencode p
  • 如何对“2-1”这样的字符串进行数学计算以产生“1”?

    我只是想知道 PHP 是否有一个函数可以接受像这样的字符串2 1并产生它的算术结果 或者我必须手动执行此操作explode 获取算术运算符左侧和右侧的值 我知道这个问题很老了 但我昨晚在寻找不太相关的东西时遇到了它 而且这里的每个答案都很糟
  • .htaccess 重写规则冲突

    我正在编写代码并构建一个 htaccess 文件 其中包含以下内容 RewriteEngine on RewriteRule A Za z0 9 A Za z0 9 index php id 1 NC L Handle page reque
  • 当 url 不存在时 file_get_contents

    我正在使用 file get contents 访问 URL file get contents http somenotrealurl com notrealpage 如果 URL 不真实 则返回此错误消息 如何让它优雅地出错 以便我知道
  • Symfony 实体在更改后不会在数据库中更新

    我的 symfony 应用程序正在使用 Doctrine 将实体保存在 mysql 中 今天 我更新了我的实体 广告商 和 报告 因此两者之间存在关系 正如本文中所建议的 使用 EntityType 显示选择时 无法从 Symfony 表单
  • 在 .NET C# 项目中使用 PHP

    有谁知道是否可以 以及是否有任何复杂性 在 NET C 项目中使用 PHP 语言 我知道 VB 和 C 现在可以混合在解决方案中 所以我想知道 由于 IIS 现在能够运行 PHP 您是否可以将它们组合成一个单一的运行时 显然 提出这个问题的
  • 将文本中的 URL 替换为 HTML 链接

    不过 这是一个设计 例如 我放置了一个链接 例如 http example com http example com in textarea 我如何让 PHP 检测到它是http 链接 然后将其打印为 print a href http w
  • 循环遍历数据数组并打印“递增”字母

    我需要循环遍历数据数组并为每个数组值打印一个 递增 字母 我知道我可以这样做 array array 11 33 44 98 1 3 2 9 66 21 45 array to loop through letters array a b
  • 在 Symfony 中重定向之前访问调试(分析器)信息

    提交表单后 我通常将用户重定向到另一个页面 表单本身除外 因此我丢失了配置文件 调试信息 如日志 我的意思是 单击 调试工具栏 后 我会获得有关重定向后请求的信息 但我确实知道 Symfony 保留有关上一页的信息 我的意思是它不会忘记它
  • 如何从 php 中的字符串中删除 unicode 字符 (LEFT_TO_RIGHT_MARK)

    我试图在将字符串编码为 JSON 之前从字符串中删除从左到右标记 u200e 和从右到左标记 u200f 以下两者似乎都不起作用 s mb ereg replace u200e s s preg replace u200e u s s pr
  • 在php中用逗号替换空格和换行符

    我搜索过但找不到任何有帮助的东西 所以 我有一堆数据 我基本上只需要在它们之间添加逗号 这些数据都来自记录 所以它的形式如下 13 566 888 958 898 我需要像这样输出 13 566 888 958 898 如果我可以将任意 2
  • 来自发布数据的 CodeIgniter 未通过

    我试图在 CodeIgniter 中上传文件 但是当我添加 enctype multipart form data 时 不会有任何发布数据通过 甚至其他领域也根本没有 但是 当我不添加它时 我可以获得其他帖子数据 但当然没有文件上传 这里出
  • XML 和 INI 哪个更快?

    我想知道 XML 是否比 INI 更快 反之亦然 我正在开发一个包含许多文件的网站 这个问题与我的问题有关关于包含许多文件 https stackoverflow com questions 7777522 too many include
  • PHP 读取 XML 播客 RSS 源

    好的 我正在为朋友的播客网站创建一个页面 列出他的播客的所有剧集 本质上 我所寻找的只是如何阅读 RSS 提要 解析出节点 并将信息显示在屏幕上 最终 我将创建一个可以播放剧集的播放器 但那是很久以后的事了 这就是我阅读 RSS 源的方式

随机推荐

  • 在不规则网格上绘制和着色数据

    我的数据格式为 x y z 其中 x 和 y 不在常规网格上 我希望显示这些数据的 2D 颜色图 并将强度 例如灰度 映射到 z 变量 一个明显的解决方案是在规则网格上进行插值 见下文 d lt data frame x runif 1e3
  • 概括 NumPy 数组中的切片操作

    这个问题是基于this较旧的问题 给定一个数组 In 122 arr np array 1 3 7 4 9 8 arr Out 122 array 1 3 7 4 9 8 并给出其指数 In 127 np indices arr shape
  • CollapsingToolbarLayout 滚动时不起作用(折叠)

    我正在尝试创建一个CollapsingToolbarLayout在它下面是一个列表视图 当列表视图滚动时 工具栏应该折叠 但是当滚动时工具栏不折叠 它不起作用 使用了这个教程 http android developers blogspot
  • java中jar文件的热交换

    我有两个 jar 文件 其中一个 jar 包含启动进程的 main 方法 其他两个 jar 仅包含类文件 在 One jar 中 我在其清单类路径中引用了 Two jar One jar 包含使用 Class forName 动态加载类的机
  • 最快的 Java HashSet 库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 此外这个很旧的帖子 我需要一些能够使用原语并为包含大量内容的应用程序提供加速的东西HashSets of Integers Set
  • 设置 jax-ws 客户端超时

    我在设置 jax ws 超时时遇到问题 我的代码是 WebServiceClient name VoipDBJDBCService targetNamespace http db server voipmeter jextreme eu w
  • Crystal Reports 图像和 ASP.Net MVC

    当我使用使用 CrystalImageHandler aspx 的图表和图像时 我在使用 Crystal Reports 时遇到了问题 图像无法显示 我怀疑这是由于 MVC 路由问题造成的 路径图像路径类似这样 src CrystalIma
  • Symfony2/Twig - 迭代选择选项

    常用显示方式select字段是要调用的 form row form doctor service id attr class form control 我想执行两件事 检查该字段是否实际上是一个选择字段 迭代每个选项 值 名称 我知道该怎样
  • React useState setter 内的更新被调用两次

    我正在尝试更新 useState setter 范围内的内容 这正如我在以下 codepen 示例中所期望的那样 更新状态变量之外的值 但正如我的应用程序中所实现的insideCallCount每人都会被叫两次toggleCell称呼 相关
  • Google 字体无法在 Internet Explorer (IE) 11 中运行

    目前正在使用 Google Fonts 构建一个网站 一切都可以在 IE6 到 10 Firefox Chrome 和移动浏览器上运行 然而 在 IE 11 上 不会加载任何字体 并且所有内容都使用后备字体 无衬线字体等 显示 同样的问题似
  • AngularJS:何时使用服务而不是工厂

    请耐心听我说 我知道还有其他答案 例如 AngularJS 服务 提供商 工厂 但是我仍然不知道你什么时候会使用工厂服务 据我所知 工厂通常用于创建可由多个控制器调用的 通用 函数 创建通用控制器功能 Angular 文档似乎更喜欢工厂而不
  • SQL Server 清除内存

    是否可以从 SQL Server 填充的数据中清除 RAM 内存 有什么程序或选项可以做到这一点吗 您可以使用 CHECKPOINT DBCC DROPCLEANBUFFERS to 从内存中删除所有数据页 测试服务器性能很有用 如果查询所
  • 即使机器人是管理员,Discord JS 管理角色权限也丢失

    我的 Discord 机器人没有向使用该命令的用户添加角色 My Code if userCmd toLowerCase prefix verify if message member roles cache find role gt ro
  • 让 Django 1.7 在 Google App Engine 上运行

    任何人都可以帮助向我们指出如何让 Django gt 1 5 在 Google App Engine 上运行的说明吗 我看到很多人声称他们可以使用 Django 1 6 我们希望运行 1 6 或 1 7 我在这里搜索了有关如何设置的说明 到
  • iOS5 UITapRecognizer 用于 UIScrollView 干扰按钮。怎么修?

    我有一堆UIButtons 内UIView在一个UIScrollView 我正在尝试向滚动视图添加点击识别器 点击识别器会触发 但现在我的按钮都不起作用 我知道在iOS5中 UIScrollView可以在完成触摸事件后以某种方式将其传递到控
  • UIImage 的 CGImage 返回 NULL

    我创建了一个将图像分割成多个图像的函数 但是当我获取 UIImage 的 CGImage 时 CGImage 返回 NULL NSArray splitImage UIImage image NSUInteger pieces NSLog
  • 如何从 Core 2 Razor 页面 ViewModel 处理程序返回部分视图

    在 Asp Net MVC 中 您可以通过执行以下操作轻松返回部分视图 return PartialView ModelName Model 这是如何在 RazorPage ViewModel 处理程序上完成的 我明白了这一点 它并不像 M
  • 为什么这里Java运行得比C快呢?

    灵感来自这个问题 Now visible only for users with gt 10k rep 我想出了以下代码 cat loop c int main int argc char argv int i 0 while i lt 2
  • 如何在 AVX 或 SSE 指令中进行间接加载(聚集-分散)?

    我已经搜索了一段时间 但似乎在文档或 SO 中找不到任何有用的东西 这个问题并没有真正帮助我 因为它引用了修改程序集 而我正在用 C 编写 我有一些代码进行间接访问 我想对其进行矢量化 for i 0 i lt LENGTH i foo b
  • Symfony2:如何从存储库访问服务

    我有 ModelsRepository 类 class ModelsRepository extends EntityRepository 和服务 container data class ProjectName MyBundle Comm