大佬教程收集整理的这篇文章主要介绍了Symfony @Paramconverter 通过自动装配,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在将 Symfony 3.3 升级到 4.4,几乎已经完成,但我还有最后一个问题。 我使用默认配置启用了自动装配,但整个项目使用了大量没有注释的 @ParamConverter 转换。
问题:带有 auto_convert 的 ParamConverter 试图通过自动装配(而不是实体)的类型提示将提到的服务和类转换给控制器。
控制器:
/**
* @Route("/report",name="report_page")
*/
public function report(
request $request,fileManager $fileManager
): Response {
// code
}
错误:
The class 'App\service\fileManager' was not found in the chain configured namespaces App\Entity.
服务“App\service\fileManager”存在并且工作正常。
ParamConverter 配置(默认为 'request: {Converters: true,auto_convert: truE}'):
sensio_framework_extra:
router:
Annotations: false
教义配置:
doctrine:
dbal:
default_connection: default
connections:
default:
# config
orm:
auto_generate_proxy_classes: '%kernel.deBUG%'
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
auto_mapPing: true
mapPings:
Base:
is_bundle: false
type: Annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: App\Entity
services:
_defaults:
autowire: true
autoconfigure: true
public: false
App\:
resource: '../src/*'
exclude: '../src/{DataFixtures,Entity,Objects,Repository,Utils}'
App\Controller\:
resource: '../src/Controller'
Tags: ['controller.service_arguments']
我知道我可以将 'sensio_framework_extra.request.auto_convert' 设置为 false 并在控制器中的任何地方使用 @ParamConverter 注释,但是这种转换的地方太多,我尝试获得默认行为,因此额外的 @ParamConverter 注释会额外。 以防万一:我尝试禁用 auto_convert 并且一切正常(服务被自动装配并且实体被传递给控制器)。
我还检查了我是否安装了最新可用版本的软件包和捆绑包。
需要一些提示。可能我错过了什么。我试图找到 ParamConverter 在默认情况下如何工作的确切方式,以及它如何检查该类是否为实体,但它太复杂了,我决定我挖得太深了。
编辑:
可能我对自动装配的配置有一些问题,而不是参数转换器。但我检查了 php bin/console deBUG:autowiring
并通过自动装配获得了所有需要的服务。
看起来 symfony 正在尝试像实体一样转换 fileManager
。
尝试将注入的服务移动到控制器的 __construct
方法中(并将属性添加到控制器中),例如:
private $fileManager;
...
public function __construct(FileManager $fileManager) {
$this->fileManager = $fileManager;
}
然后在 report
方法中访问它:
$this->fileManager
以上是大佬教程为你收集整理的Symfony @Paramconverter 通过自动装配全部内容,希望文章能够帮你解决Symfony @Paramconverter 通过自动装配所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。