Почему Doctrine не создает мой прокси-класс после его расширения? - PullRequest
0 голосов
/ 11 июня 2019

В настоящее время я использую компоненты Sylius в своем приложении Symfony, и по какой-то причине мне пришлось расширить класс Sylius, чтобы добавить информацию о продукте.

namespace AppBundle\Entity;

use Sylius\Component\Core\Model\Product as BaseProduct;
use Sylius\Component\Product\Model\ProductInterface;

class Product extends BaseProduct implements ProductInterface
{

Но в итоге я получаю следующую ошибку:

2019/06/11 09:59:44 [error] 13#13: *2939 FastCGI sent in stderr: "PHP message: PHP Warning:  require(/var/www/var/cache/dev/doctrine/orm/Proxies/__CG__SyliusComponentCoreModelProduct.php): failed to open stream: No such file or directory in /var/www/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php on line 206

На самом деле мой новый прокси класса создан (__CG__AppBundleEntityProduct.php), но прокси родительского класса больше не создается (__CG__SyliusComponentCoreModelProduct.php).

My Symfony ver.3.4.19 Я уже искал в Google, переполнение стека и т. д., но ни один из предоставленных ответов не мог решить мою проблему.

Я попытался очистить / перестроить кэш, использовать родительский класс Sylius «Продукт / Модель / Продукт» вместо «Ядро / Модель / Продукт», проверить правильность написания моего нового класса, и я ужеустановите "auto_generate_proxy_classes: true" в моей конфигурации.

Вот первые строки моего нового класса:

namespace AppBundle\Entity;

use Sylius\Component\Core\Model\Product as BaseProduct;
use Sylius\Component\Core\Model\ProductTranslation;
use Sylius\Component\Product\Model\ProductTranslationInterface;
use Sylius\Component\Product\Model\ProductInterface;
use Sylius\Component\Resource\Model\TranslatableTrait;
use Sylius\Component\Resource\Model\TranslationInterface;

class Product extends BaseProduct implements ProductInterface
{
   use TranslatableTrait {
       __construct as private initializeTranslationsCollection;
       getTranslation as private doGetTranslation;
   }

   /** @var string */
   private $stripe_id;

   /** @var string */
   private $product_stripe_id;

/** getters and setters **/
/** ... **/

}

Вот часть моего файла конфигурации, с генерацией прокси Doctrine длямой класс:

sylius_product:
   driver: doctrine/orm
   resources:
       product:
           classes:
               model: AppBundle\Entity\Product
               repository: AppBundle\Repository\ProductRepository
           translation:
               classes:
                   model: Sylius\Component\Core\Model\ProductTranslation
       product_variant:
           classes:
               model: Sylius\Component\Core\Model\ProductVariant
               controller: Sylius\Bundle\CoreBundle\Controller\ProductVariantController
               repository: Sylius\Bundle\CoreBundle\Doctrine\ORM\ProductVariantRepository
       product_option:
           classes:
               repository: Sylius\Bundle\CoreBundle\Doctrine\ORM\ProductOptionRepository
       product_association_type:
           classes:
               repository: Sylius\Bundle\ProductBundle\Doctrine\ORM\ProductAssociationTypeRepository

Помощь будет высоко ценится.

...