首页 > 解决方案 > Sylius 1.3 - “Sylius\Component\Addressing\Model\X”的类“App\Entity\X”子类不是有效的实体或映射的超类

问题描述

/config/packages/_sylius.yaml 的内容

imports:
    - { resource: "@SyliusCoreBundle/Resources/config/app/config.yml" }

    - { resource: "@SyliusAdminBundle/Resources/config/app/config.yml" }
    - { resource: "@SyliusAdminApiBundle/Resources/config/app/config.yml" }

    - { resource: "@SyliusShopBundle/Resources/config/app/config.yml" }

parameters:
    sylius_core.public_dir: '%kernel.project_dir%/public'

sylius_shop:
    product_grid:
        include_all_descendants: true

sylius_theme:
    sources:
        filesystem:
            directories:
                - "%kernel.project_dir%/themes"

sylius_addressing:
    resources:
        country:
            classes:
                model: App\Entity\Country

/src/Entity/Country.php 的内容

namespace App\Entity;

use Sylius\Component\Addressing\Model\Country as BaseCountry;

class Country extends BaseCountry
{
    /**
     * @var bool
     */
    private $flag;

    /**
     * @return bool|null
     */
    public function getFlag(): ?bool
    {
        return $this->flag;
    }

    /**
     * @param bool $flag
     */
    public function setFlag(bool $flag): void
    {
        $this->flag = $flag;
    }
}

/src/Resources/config/doctrine/Country.orm.yml 的内容

App\Entity\Country:
  type: entity
  table: sylius_country
  fields:
    flag:
      type: boolean
      nullable: true

但是,在运行 Symfony 的模式更新命令时,会显示以下错误消息:

“Sylius\Component\Addressing\Model\Country”的类“App\Entity\Country”子类不是有效的实体或映射的超类。

任何帮助,将不胜感激。先感谢您。

标签: symfonysyliussylius-1.3

解决方案


您需要像这样映射您的实体。

# config/packages/doctrine.yaml

doctrine:
    orm:
        mappings:
            AppEntity:
                type: xml
                is_bundle: false
                prefix: App\Entity
                dir: '%project.dir%/src/Resources/config/doctrine/model'

然后创建您的映射文件,例如。src/Resources/config/doctrine/model/YourEntity.xml


推荐阅读