2017-09-01 77 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