我正在尝试将一个SF 3.3应用程序迁移到SF 4,它有新的目录结构和所有内容。
我正在努力解决这个例外:
编译容器时,simplethings_entityaudit.reader服务或别名已被删除或内联。您应该将其公开,或者直接停止使用容器,转而使用依赖注入。
(此服务来自位于 /vendor的外部捆绑包)。
然而,当Ibin/console debug:container simplethings\u entityaudit.reader时,您将看到该服务存在并且是公共的:
Information for Service "simplethings_entityaudit.reader"
=========================================================
----------------- --------------------------------------
Option Value
----------------- --------------------------------------
Service ID simplethings_entityaudit.reader
Class SimpleThings\EntityAudit\AuditReader
Tags -
Public yes
Synthetic no
Lazy no
Shared yes
Abstract no
Autowired no
Autoconfigured no
Factory Service simplethings_entityaudit.manager
Factory Method createAuditReader
----------------- --------------------------------------
此服务目前在我自己的一个调用
$this-
我还尝试将
SimpleThings\EntityAudit\AuditReader
注入到我的服务构造函数中,但我得到的是:
方法"__construct()"的参数"$auditReader"引用类"Simple物联网\EntityAude\AuditReader",但不存在这样的服务。它不能自动注册,因为它来自不同的根命名空间。
当我将它添加到我的
服务.yaml中时,它可以工作,但我不需要这样做:
SimpleThings\EntityAudit\AuditReader:
alias: simplethings_entityaudit.reader
有什么想法吗?
在我们的例子中,我们做了一个services_test.yml。env.testAPP_ENV测试
然后在这个服务测试中,我们放置了
服务:\默认值:public:true
因此,默认情况下,所有服务都是公共的
别忘了为你的.env和.env.test找源。我经常要这样做,因为我需要重新启动我的虚拟机
在Symfony 4.0中,任何未指定其可见性的服务都是私有的,https://github.com/symfony/symfony/pull/24238.
据我所知,您提到的服务没有指定可见性:https://github.com/simplethings/EntityAuditBundle/blob/1.0/src/SimpleThings/EntityAudit/Resources/config/auditable.xml#L23-L26,所以这可能就是你例外的原因。
如果simplethings\u entityaudit.reader
服务无法自动连接(这可能是因为它使用工厂服务),您可以通过引用@simplethings\u entityaudit.reader
符号将其插入到您自己的服务中,如下所示:https://symfony.com/doc/current/service_container.html#services-手动连接args,大概是这样的:
services:
My\Service:
arguments:
$auditReader: @simplethings_entityaudit.reader
在我的例子中,错误出现在单元测试中。
我只有一个服务,无法在测试中加载(Symfony 4.2),而我的项目中的所有其他服务都运行良好。
我已经清除了缓存,但没用。然后,我创建了一个带有路由的简单控制器,并将服务作为方法参数注入。之后,服务在我的测试中也起了作用。
结论:如果您有一个单元测试并且想要测试您的服务,那么您还必须提供一个注入服务的控制器,否则它在测试服务容器中不可用。显式服务配置也可能有所帮助。
我正在尝试将一些Symfony 3代码重构为Symfony 4。 我得到以下错误时,试图登录: 编译容器时,“monolog.logger.db”服务或别名已被删除或内联。您应该将其公开,或者停止直接使用conta iner,改用依赖项注入。 我的日志代码: 独白配置: app.monolog.db_handler config(注意,我在这里尝试了,但没有影响: 我怎样才能在Symfony 4中
从我搜索的url中删除public/from并尝试执行以下步骤 > 抄袭。htaccess from public/并将其粘贴到root/ 更改服务器。php来索引。php 我试着补充一下 RewriteRule上的RewriteEngine^(.*)$public/$1[L] 我的 /.htaccess删除网址公共它没有工作。 但是,如果我删除了这一行它的工作,但我所有的Url链接到css它的错
问题内容: 请考虑下表: 我认为记录{1,2,A}和{2,1,A}是重复的。我需要选择并产生以下记录集: 我尝试了以下查询。但无济于事。 甚至这个: 两者都不起作用。 该数据库将为Oracle 10g。寻找纯SQL解决方案。感谢您的帮助。 问题答案: 使用GREATEST()和LEAST()函数来识别多个列中的公共值。然后使用DISTINCT清除重复项。 这样可以为您提供精确的记录集。但是,如果您
我有一个由两个Symfony应用程序使用的库,该库定义了一组我希望公开的服务(我希望能够通过容器直接检索这些服务)。当我尝试访问一个服务时,我有: 编译容器时,已删除或内联库\Service\DerivedServices\OneSpecific实现"服务或别名。您应该将其公开,或者直接停止使用容器,转而使用依赖注入。 问题是,所述服务是公开的。 基本上有: 一个库\服务\BaseService类
我正在aws中运行openshift 我有一个主节点和两个节点。如何向aws公共IP公开服务?我可以在内部访问服务: 我怎么把它暴露给公共IP呢?是否可以在openshfit web控制台中完成?我尝试使用https://docs.openshift.com/container-platform/3.4/dev_guide/expose_service/expose_internal_ip_ser