2017-09-01 76 views
1

我是继官方documentation安装索纳塔媒体捆绑,我觉得它的工作,直到步,当我使用这个命令:Symfony的3 - 索纳塔Aplication媒体捆绑错误

php bin/console sonata:easy-extends:generate --dest=src SonataMediaBundle 

然后,添加new Application\Sonata\MediaBundle\ApplicationSonataMediaBundle(),到AppKernel。 PHP。

完成这些步骤后,我尝试进入到英里管理(本地主机:8000 /管理员),但引发此错误:

Attempted to load class "ApplicationSonataMediaBundle" from namespace "Application\Sonata\MediaBundle". Did you forget a "use" statement for another namespace?

我试图执行php bin/console doctrine:schema:create(或更新)和故障仍未排除:

[email protected]:/workdir/Testing$ php bin/console doctrine:schema:update --force 
PHP Fatal error: Uncaught Symfony\Component\Debug\Exception\ClassNotFoundException: Attempted to load class "ApplicationSonataMediaBundle" from namespace "Application\Sonata\MediaBundle". 
Did you forget a "use" statement for another namespace? in /workdir/Testing/app/AppKernel.php:32 
Stack trace: 
#0 /workdir/Testing/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php(450): AppKernel->registerBundles() 
#1 /workdir/Testing/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php(116): Symfony\Component\HttpKernel\Kernel->initializeBundles() 
#2 /workdir/Testing/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php(137): Symfony\Component\HttpKernel\Kernel->boot() 
#3 /workdir/Testing/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php(124): Symfony\Bundle\FrameworkBundle\Console\Application->registerCommands() 
#4 /workdir/Testing/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(90): Symfony\Bundle\FrameworkBundle\Console\Applica in /workdir/Testing/app/AppKernel.php on line 32 

我证实路线是正确的,并遵循步骤就像文件,我一直在互联网上寻找答案,发现任何东西。请帮忙!

我试图执行php bin/console sonata:easy-extends:generate --dest=src SonataMediaBundle--dest=src放置文件夹中的应用程序/但错误继续...

根据DOC我config.yml:

doctrine: 
    dbal: 
     driver: pdo_mysql 
     host: '%database_host%' 
     port: '%database_port%' 
     dbname: '%database_name%' 
     user: '%database_user%' 
     password: '%database_password%' 
     charset: UTF8 
     types: 
      json: Sonata\Doctrine\Types\JsonType 
     # if using pdo_sqlite as your database driver: 
     # 1. add the path in parameters.yml 
     #  e.g. database_path: "%kernel.project_dir%/var/data/data.sqlite" 
     # 2. Uncomment database_path in parameters.yml.dist 
     # 3. Uncomment next line: 
     #path: '%database_path%' 

    orm: 
     auto_generate_proxy_classes: '%kernel.debug%' 
     naming_strategy: doctrine.orm.naming_strategy.underscore 
     auto_mapping: true 
     mappings: 
      ApplicationSonataMediaBundle: ~ 
      SonataMediaBundle: ~ 

sonata_media: 
    # if you don't use default namespace configuration 
    #class: 
    # media: MyVendor\MediaBundle\Entity\Media 
    # gallery: MyVendor\MediaBundle\Entity\Gallery 
    # gallery_has_media: MyVendor\MediaBundle\Entity\GalleryHasMedia 
    db_driver: doctrine_orm # or doctrine_mongodb, doctrine_phpcr it is mandatory to choose one here 
    default_context: default # you need to set a context 
    contexts: 
     default: # the default context is mandatory 
      providers: 
      - sonata.media.provider.dailymotion 
      - sonata.media.provider.youtube 
      - sonata.media.provider.image 
      - sonata.media.provider.file 
      - sonata.media.provider.vimeo 

      formats: 
      small: { width: 100 , quality: 70} 
      big: { width: 500 , quality: 70} 

    cdn: 
     server: 
      path: /uploads/media # http://media.sonata-project.org/ 

    filesystem: 
     local: 
      directory: "%kernel.root_dir%/../web/uploads/media" 
      create:  false 

而且我的routing.yml:

gallery: 
    resource: '@SonataMediaBundle/Resources/config/routing/gallery.xml' 
    prefix: /media/gallery 

media: 
    resource: '@SonataMediaBundle/Resources/config/routing/media.xml' 
    prefix: /media 

编辑:

我认为问题是使用Easy-Extends,因为我试图安装Classification Bundle并发生同样的情况,目前的Symfony版本是否支持Easy-Extends?也许是因为索纳塔用户捆绑不与当前版本兼容的(我想这太)...

编辑2:

我composer.json文件:

{ 
    "name": "vagrant/testing", 
    "license": "proprietary", 
    "type": "project", 
    "autoload": { 
     "psr-4": { 
      "AppBundle\\": "src/AppBundle" 
     }, 
     "classmap": [ 
      "app/AppKernel.php", 
      "app/AppCache.php" 
     ] 
    }, 
    "autoload-dev": { 
     "psr-4": { 
      "Tests\\": "tests/" 
     }, 
     "files": [ 
      "vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php" 
     ] 
    }, 
    "require": { 
     "php": ">=5.5.9", 
     "doctrine/doctrine-bundle": "^1.6", 
     "doctrine/orm": "^2.5", 
     "friendsofsymfony/user-bundle": "^2.0", 
     "gedmo/doctrine-extensions": "^2.4", 
     "incenteev/composer-parameter-handler": "^2.0", 
     "pixassociates/sortable-behavior-bundle": "^1.3", 
     "sensio/distribution-bundle": "^5.0.19", 
     "sensio/framework-extra-bundle": "^3.0.2", 
     "sonata-project/admin-bundle": "^3.20", 
     "sonata-project/doctrine-orm-admin-bundle": "^3.1", 
     "sonata-project/easy-extends-bundle": "^2.2", 
     "sonata-project/media-bundle": "^3.6", 
     "stof/doctrine-extensions-bundle": "^1.2", 
     "symfony/monolog-bundle": "^3.1.0", 
     "symfony/polyfill-apcu": "^1.0", 
     "symfony/swiftmailer-bundle": "^2.3.10", 
     "symfony/symfony": "3.3.*", 
     "twig/twig": "^1.0||^2.0", 
     "vich/uploader-bundle": "^1.6" 
    }, 
    "require-dev": { 
     "sensio/generator-bundle": "^3.0", 
     "symfony/phpunit-bridge": "^3.0" 
    }, 
    "scripts": { 
     "symfony-scripts": [ 
      "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget" 
     ], 
     "post-install-cmd": [ 
      "@symfony-scripts" 
     ], 
     "post-update-cmd": [ 
      "@symfony-scripts" 
     ] 
    }, 
    "config": { 
     "sort-packages": true 
    }, 
    "extra": { 
     "symfony-app-dir": "app", 
     "symfony-bin-dir": "bin", 
     "symfony-var-dir": "var", 
     "symfony-web-dir": "web", 
     "symfony-tests-dir": "tests", 
     "symfony-assets-install": "relative", 
     "incenteev-parameters": { 
      "file": "app/config/parameters.yml" 
     }, 
     "branch-alias": null 
    } 
} 
+0

我猜,你的新包没有合适的自动加载定义。你可以发布你的composer.json文件的'autoload'部分的内容吗? –

+0

发布了composer.json。我不知道我必须改变什么...... – LauraEld

回答

2

您需要添加自动加载器在您的composer.json中的定义与AppBundle相似。

据我了解,是根据路径src/Application/Sonata/MediaBundle产生新的软件包所以这将是:

"autoload": { 
    "psr-4": { 
     "AppBundle\\": "src/AppBundle" 
     "Application\Sonata\MediaBundle\\": "src/Application/Sonata/MediaBundle" 
    }, 
    "classmap": [ 
     "app/AppKernel.php", 
     "app/AppCache.php" 
    ] 
}, 
+1

非常感谢!如果我使用''Application \\“:”src/Application“'而不是所有路由,它都可以工作。 – LauraEld

+1

是的,它也可以工作,但建议尽可能具体。所以如果你在src/Application下有其他的东西,比你的方式好,但是如果只有SonataMediaBundle,那么按照我的说法会更好。 –

+1

对我来说: “Application \\ Sonata \\ MediaBundle \\”:src/Application/Sonata/MediaBundle“ 然后: composer dump-autoload – user3468914