2017-08-10 45 views
0

我是新来Symfony.I正在努力学习中Symfony.I文件上传我得到以下错误:获得FileLoaderLoadException symfony的

(3/3)FileLoaderLoadException 文件“d:\ WAMP \ WWW \ symfony_project \ app/config \ services.yml“不包含D:\ wamp \ www \ symfony_project \ app/config \ services.yml中的有效YAML(正在从D:\ wamp \ www \ symfony_project \ app导入/config\config.yml“)。

config.yml

parameters: 
brochures_directory: '%kernel.symfony_project%/../web/uploads/brochures' 

services.yml

# Learn more about services, parameters and containers at 
# https://symfony.com/doc/current/service_container.html 
parameters: 
    #parameter_name: value 

services: 
    # default configuration for services in *this* file 
    _defaults: 
     # automatically injects dependencies in your services 
     autowire: true 
     # automatically registers your services as commands, event subscribers, etc. 
     autoconfigure: true 
     # this means you cannot fetch services directly from the container via $container->get() 
     # if you need to do this, you can override this setting on individual services 
     public: false 

    # makes classes in src/AppBundle available to be used as services 
    # this creates a service per class whose id is the fully-qualified class name 
    AppBundle\: 
     resource: '../../src/AppBundle/*' 
     # you can exclude directories or files 
     # but if a service is unused, it's removed anyway 
     exclude: '../../src/AppBundle/{Entity,Repository,Tests}' 

    # controllers are imported separately to make sure they're public 
    # and have a tag that allows actions to type-hint services 
    AppBundle\Controller\: 
     resource: '../../src/AppBundle/Controller' 
     public: true 
     tags: ['controller.service_arguments'] 

    # add more services, or override services that need manual wiring 
    # AppBundle\Service\ExampleService: 
    #  arguments: 
    #   $someArgument: 'some_value' 
    admin.category: 
     class: AppBundle\Admin\CategoryAdmin 
     arguments: [~, AppBundle\Entity\Category, ~] 
     tags: 
      - { name: sonata.admin, manager_type: orm, label: Category } 
     public: true 

    admin.blog_post: 
     class: AppBundle\Admin\BlogPostAdmin 
     arguments: [~, AppBundle\Entity\BlogPost, ~] 
     tags: 
      - { name: sonata.admin, manager_type: orm, label: Blog post } 
     public: true 

    AppBundle\Service\FileUploader: 
     arguments: 
      targetDir: '%brochures_directory%' 

FileUploader.php

namespace AppBundle\Service; 

use Symfony\Component\HttpFoundation\File\UploadedFile; 

class FileUploader 
{ 
    private $targetDir; 

    public function __construct($targetDir) 
    { 
     $this->targetDir = $targetDir; 
    } 

    public function upload(UploadedFile $file) 
    { 
     $fileName = md5(uniqid()).'.'.$file->guessExtension(); 

     $file->move($this->getTargetDir(), $fileName); 

     return $fileName; 
    } 

    public function getTargetDir() 
    { 
     return $this->targetDir; 
    } 
} 

+0

你能告诉你的'FileUploader'类? –

+0

您必须用四个空格缩进brochures_directory参数。但无论如何,如上所述,如果您发布整个文件,那么效果会更好。 – Carlos

+0

@Carlos和Imanali我发布了它 – Swati

回答

0

由于错误说,services.yml无效YAML。本着targetDir之前删除$标志:

 $targetDir: '%brochures_directory%' 

因此,这将是:

AppBundle\Service\FileUploader: 
    arguments: 
     targetDir: '%brochures_directory%' 

我想,这是你的问题,但我不能肯定,因为我不知道怎么看起来整个做这个文件的内容。

+0

不,它没有工作! – Swati

+1

所以问题出在你提供的样品以外的地方。粘贴整个服务。yml'文件照顾空格,因为它们在YAML语法中很重要。 –

0

您services.yml不包含有效的YAML(错误信息不能得到更清晰;))

尝试这种代码:

/***/ 
admin.blog_post: 
    class: AppBundle\Admin\BlogPostAdmin 
    arguments: [~, AppBundle\Entity\BlogPost, ~] 
    tags: 
     - { name: sonata.admin, manager_type: orm, label: Blog post } 
    public: true 

admin.file_uploader: 
    class: AppBundle\Service\FileUploader 
    arguments: [~, '%brochures_directory%', ~] 
+0

@ scoolnico没有改变! – Swati

0

变化

parameters: 
brochures_directory: '%kernel.symfony_project%/../web/uploads/brochures' 

parameters: 
    brochures_directory: '%kernel.symfony_project%/../web/uploads/brochures' 
0

现在应该工作:

→ ﹍AppBundle\Service\FileUploader: 
    arguments: 
     targetDir: '%brochures_directory%' 

提示:

# Learn more about services, parameters and containers at 
# https://symfony.com/doc/current/service_container.html 
parameters: 
    #parameter_name: value 

services: 
    # default configuration for services in *this* file 
    _defaults: 
     # automatically injects dependencies in your services 
     autowire: true 
     # automatically registers your services as commands, event subscribers, etc. 
     autoconfigure: true 
     # this means you cannot fetch services directly from the container via $container->get() 
     # if you need to do this, you can override this setting on individual services 
     public: false 

    # makes classes in src/AppBundle available to be used as services 
    # this creates a service per class whose id is the fully-qualified class name 
    AppBundle\: 
     resource: '../../src/AppBundle/*' 
     # you can exclude directories or files 
     # but if a service is unused, it's removed anyway 
     exclude: '../../src/AppBundle/{Entity,Repository,Tests}' 

    # controllers are imported separately to make sure they're public 
    # and have a tag that allows actions to type-hint services 
    AppBundle\Controller\: 
     resource: '../../src/AppBundle/Controller' 
     public: true 
     tags: 
      - { name: "controller.service_arguments" } 

    # add more services, or override services that need manual wiring 
    # AppBundle\Service\ExampleService: 
    #  arguments: 
    #   $someArgument: 'some_value' 
    admin.category: 
     class: AppBundle\Admin\CategoryAdmin 
     arguments: [~, AppBundle\Entity\Category, ~] 
     tags: 
      - { name: sonata.admin, manager_type: orm, label: Category } 
     public: true 

    admin.blog_post: 
     class: AppBundle\Admin\BlogPostAdmin 
     arguments: [~, AppBundle\Entity\BlogPost, ~] 
     tags: 
      - { name: sonata.admin, manager_type: orm, label: Blog post } 
     public: true 

    AppBundle\Service\FileUploader: 
     arguments: 
      targetDir: '%brochures_directory%' 
0

您在AppBundle\Service\FileUploader前面有空间在未来使用YAML棉短绒:

bin/console lint:yaml app/config/services.yml 

Symfony YAML linter