Установка Symfony 4 Sonata Media Bundle

У меня есть несколько ошибок во время установки пакета Sonata Media Bundle в приложении Symfony 4, которого не было в Symfony 2.8.

Первая ошибка:

 sensio/generator-bundle v3.1.6 requires symfony/framework-bundle ~2.7|~3.0

Следующий, после решения предыдущего:

- php-amqplib/php-amqplib v2.7.0 requires ext-bcmath * -> the requested PHP extension bcmath is missing from your system.

Еще один:

Unrecognized options "naming_strategy, auto_mapping, mappings" under "doctrine.orm"

И затем, когда я попытался очистить кеш:

Class Application\Sonata\MediaBundle\ApplicationSonataMediaBundle not found in home/user/projects/svoya-fignia/config/services.yaml (which is loaded in resource "/home/user/projects/svoya-fignia/config/services.yaml").

или этот

Class Sonata\MediaBundle\PHPCR\BaseGalleryHasMediaRepository not found in home/user/projects/svoya-fignia/config/services.yaml (which is loaded in resource "/home/user/projects/svoya-fignia/config/services.yaml").

person Pavel Alazankin    schedule 24.01.2018    source источник


Ответы (2)


Я нашел решения для всех из них, но это заняло некоторое время, поэтому я хочу разместить его здесь для всех, кто сталкивается с этой проблемой.

Первая ошибка с sensio/generator-bundle решается путем запроса версии sonata-media-bundle для разработчиков:

composer require sonata-project/media-bundle:3.x-dev

Решение для следующего очевидно, но тем не менее:

sudo yum install php-bcmath

or

sudo apt-get install php-bcmath

Проблема с нераспознанными параметрами решается здесь: Доктрина Symfony auto_mapping Unrecognized

И, наконец, проблема с ненайденными классами вызвана автомонтированием symfony и должна быть решена путем добавления каталога Application к исключенным:

# services.yaml
services:
    App\:
        resource: '../src/*'
        exclude: '../src/{Entity,Migrations,Tests,Application}'

Если у вас есть что добавить или мои решения не самые лучшие, дайте мне знать, и я обновлю этот пост.

person Pavel Alazankin    schedule 24.01.2018

Для

Нераспознанные опции naming_strategy, auto_mapping, сопоставления в доктрине.orm

ошибка, попробуйте добавить конфигурации в orm.entity_managers вместо orm в вашем config/packages/doctrine.yaml, примерно так:

doctrine:
    dbal:
        url: '%env(resolve:DATABASE_URL)%'

        # IMPORTANT: You MUST configure your server version,
        # either here or in the DATABASE_URL env var (see .env file)
        #server_version: '5.7'
    orm:
        auto_generate_proxy_classes: true
        #naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
        #auto_mapping: true
        #mappings:
        #    App:
        #        is_bundle: false
        #        type: annotation
        #        dir: '%kernel.project_dir%/src/Entity'
        #        prefix: 'App\Entity'
        #        alias: App

        entity_managers:
            default:
                naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
                auto_mapping: true
                mappings:
                    SonataUserBundle: ~
                    FOSUserBundle: ~
                    App:
                        is_bundle: false
                        type: annotation
                        dir: '%kernel.project_dir%/src/Entity'
                        prefix: 'App\Entity'
                        alias: App

Это работает с Symfony 4.4. Может быть, это может кому-то помочь... Я провел несколько часов с этой ошибкой:/

person Josephine    schedule 20.10.2020