【问题标题】:Symfony2 not loading ServiceSymfony2 未加载服务
【发布时间】:2023-03-18 08:03:02
【问题描述】:

我尝试按照文档书示例使用 Synfony 2 创建/加载服务,但我遇到了这个问题。目前我有

<?php
//src/AppBundle/Services/AmazonWS.php
namespace AppBundle\Services;
use Aws\S3\S3Client;
class AmazonWS
{

    function __construct($bucket,$key,$secret){}
}

在我的 services.yml:

parameters:
#    parameter_name: value
  amazonws.S3_BUCKET : "synfony"
  amazonws.S3_KEY : "my_key"
  amazonws.S3_SECRET : "my_secret"

services:
#    service_name:
#        class: AppBundle\Directory\ClassName
#        arguments: ["@another_service_name", "plain_value", "%parameter_name%"]

AmazonWS:
  class: AppBundle\Services\AmazonWS
  arguments: ["%amazonws.S3_BUCKET%","%amazonws.S3_KEY%","%amazonws.S3_SECRET%"]

我收到以下错误:

 [Symfony\Component\Config\Exception\FileLoaderLoadException]                                                                                                                                  
  There is no extension able to load the configuration for "AmazonWS" (in /home/sergio/Desktop/hello_symfony_heroku/app/config/services.yml). Looked for namespace "AmazonWS", found "framewor  
  k", "security", "twig", "monolog", "swiftmailer", "assetic", "doctrine", "sensio_framework_extra", "debug", "web_profiler", "sensio_distribution" in /home/sergio/Desktop/hello_symfony_hero  
  ku/app/config/services.yml (which is being imported from "/home/sergio/Desktop/hello_symfony_heroku/app/config/config.yml").                                                                  


  [Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]                                                                                                                    
  There is no extension able to load the configuration for "AmazonWS" (in /home/sergio/Desktop/hello_symfony_heroku/app/config/services.yml). Looked for namespace "AmazonWS", found "framewor  
  k", "security", "twig", "monolog", "swiftmailer", "assetic", "doctrine", "sensio_framework_extra", "debug", "web_profiler", "sensio_distribution" 

我得到了 config.yml

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services.yml }

【问题讨论】:

  • 尝试在 services.yml 中的 AmazonWS 前添加缩进
  • 你有负责加载 services.yml 文件的 DependencyInjection 文件夹吗?
  • 不,只是上面添加的全新项目

标签: php symfony yaml symfony-2.7


【解决方案1】:

您是否尝试过使用 AppBundle 中的依赖注入?

src/AppBundle/DependencyInjection/AppExtension.php:

<?php

namespace AppBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;

class AppExtension extends Extension
{
    public function load(array $configs, ContainerBuilder $container)
    {
        $configuration = new Configuration();
        $config = $this->processConfiguration($configuration, $configs);

        $loader = new Loader\YamlFileLoader(
            $container,
            new FileLocator(__DIR__.'/../Resources/config')
        );
        $loader->load('services.yml');
    }
}

然后使用位于src/AppBundle/Resources/config/services.yml 中的 services.yml(如果不存在则创建它)。

【讨论】:

  • 谢谢,我跳过了捆绑章节,以为我可以声明服务,再次感谢您
【解决方案2】:

缩进:

services:
    AmazonWS:
        class: AppBundle\Services\AmazonWS
        arguments: ["%amazonws.S3_BUCKET%","%amazonws.S3_KEY%","%amazonws.S3_SECRET%"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多