Symfony 6.2自定义Bundle配置环境变量报错求助
问题解决:Symfony自定义Bundle配置与服务参数错误
问题回顾
- 配置
config/packages/schoenef_html_to_pdf.yaml时,弹出错误:Environment variables "resolve:HTML_TO_PDF_API_KEY" are never used. Please, check your container's configuration - 排查后调整服务定义,又出现新错误:
You have requested a non-existent parameter "schoenef_html_to_pdf",核心原因是schoenef_html_to_pdf是Bundle的原生配置节点,并未被注册为容器可识别的参数。
解决方案
方案1:通过Bundle Extension注册配置为参数(规范做法)
找到该Bundle的Extension类(通常路径为vendor/schoenef/html-to-pdf-bundle/src/DependencyInjection/SchoenefHtmlToPdfExtension.php),在load方法中添加代码,将完整配置数组注册为容器参数:
public function load(array $configs, ContainerBuilder $container) { $configuration = new Configuration(); $config = $this->processConfiguration($configuration, $configs); // 将整个Bundle配置注册为容器参数 $container->setParameter('schoenef_html_to_pdf', $config); $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../config')); $loader->load('services.yml'); }
保存修改后,原服务定义中的%schoenef_html_to_pdf%参数即可正常读取配置数组,同时环境变量未被使用的错误也会自动消失。
方案2:直接在服务定义中用表达式获取配置(无需修改Extension)
修改vendor/schoenef/html-to-pdf-bundle/config/services.yml中的服务参数,使用Symfony表达式语言直接读取配置节点内容:
services: Schoenef\HtmlToPdfBundle\Service\Html2PdfConnector: arguments: $connectorConfig: "@=config('schoenef_html_to_pdf')"
此方式跳过参数注册环节,直接从容器配置树中获取完整的Bundle配置数组,快速解决参数不存在的问题。
内容的提问来源于stack exchange,提问作者Andreas
相关产品推荐
相关产品推荐

