Нераспознанная галерея полей в режиме Symfony prod - PullRequest
0 голосов
/ 21 апреля 2020

Я разрабатываю веб-сайт с Symfony 4.4, используя пакеты SonataAdmin (^ 3.56), Doctrine ORM Admin (^ 3.12), Sonata Media (^ 3.22) и SonataClassification (^ 3.9). Мой веб-сайт отлично работает в режиме разработки. Проблема в том, когда я переключаю его в режим prod.

.env

APP_ENV=prod
APP_DEBUG=0

Когда я получаю доступ к маршрутам с помощью галереи SonataMedia, я получаю ошибку 500. Файл журнала (prod.log) содержит следующее content:

request.CRITICAL: Uncaught PHP Exception Doctrine\ORM\ORMException: "Unrecognized field: gallery" at /home/repincln/dev/site/vendor/doctrine/orm/lib/Doctrine/ORM/ORMException.php line 101 {"exception":"[object] (Doctrine\\ORM\\ORMException(code: 0): Unrecognized field: gallery at /home/repincln/dev/site/vendor/doctrine/orm/lib/Doctrine/ORM/ORMException.php:101)"} []

В контроллере у меня есть:

...
$medias = $this->getDoctrine()->getRepository("ApplicationSonataMediaBundle:GalleryHasMedia")->findBy(array('gallery' => $article->getGallery()));
...

Если я дам дамп $ medias в режиме разработки, он выглядит хорошо, со всеми изображениями в галерее, но в производственном режиме это не не работает.

Аналогичная вещь происходит в SonataAdmin Admin-> Classification

request.CRITICAL: Uncaught PHP Exception Doctrine\ORM\Query\QueryException: "[Semantical Error] line 0, col 84 near 'parent IS NU': Error: Class App\Application\Sonata\ClassificationBundle\Entity\Category has no field or association named parent" at /home/repincln/dev/site/vendor/doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php line 65 {"exception":"[object] (Doctrine\\ORM\\Query\\QueryException(code: 0): [Semantical Error] line 0, col 84 near 'parent IS NU': Error: Class App\\Application\\Sonata\\ClassificationBundle\\Entity\\Category has no field or association named parent at /home/repincln/dev/site/vendor/doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php:65, Doctrine\\ORM\\Query\\QueryException(code: 0): SELECT c FROM App\\Application\\Sonata\\ClassificationBundle\\Entity\\Category c WHERE c.parent IS NULL at /home/repincln/dev/site/vendor/doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php:43)"} []

и Теги, Коллекции, Медиа. Только Контексты работают нормально. Например, галерея выглядит так:

enter image description here

config / packages / prod / doctrine .yaml

doctrine:
    orm:
        auto_generate_proxy_classes: false
        metadata_cache_driver:
            type: service
            id: doctrine.system_cache_provider
        query_cache_driver:
            type: service
            id: doctrine.system_cache_provider
        result_cache_driver:
            type: service
            id: doctrine.result_cache_provider

services:
    doctrine.result_cache_provider:
        class: Symfony\Component\Cache\DoctrineProvider
        public: false
        arguments:
            - '@doctrine.result_cache_pool'
    doctrine.system_cache_provider:
        class: Symfony\Component\Cache\DoctrineProvider
        public: false
        arguments:
            - '@doctrine.system_cache_pool'

framework:
    cache:
        pools:
            doctrine.result_cache_pool:
                adapter: cache.app
            doctrine.system_cache_pool:
                adapter: cache.system

config / packages /doctrine.yaml

doctrine:
    dbal:
        url: '%env(resolve:DATABASE_URL)%'
        types:
            json: Sonata\Doctrine\Types\JsonType

    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

Статья. php

...
    /**
    * @ORM\ManyToOne(targetEntity="App\Application\Sonata\MediaBundle\Entity\Gallery");
    */
    private $gallery;
...

Как я уже писал в режиме разработки, все работает нормально.

Проблема сохраняется даже хотя я делал (много раз):

Есть идеи, что еще я могу сделать? Я думаю, что есть проблема с кешем ... где-то.

1 Ответ

0 голосов
/ 21 апреля 2020

Я наконец-то нашел решение.

У меня было в config / bundles. php

Sonata\EasyExtendsBundle\SonataEasyExtendsBundle::class => ['dev' => true, 'test' => true],

Должно быть:

Sonata\EasyExtendsBundle\SonataEasyExtendsBundle::class => ['all' => true],
...