Sylius 覆盖 ShopUser 模型
Sylius Overriding ShopUser Model
我想覆盖 SyliusCoreBundle 的 shop_user 模型,我遵循了 instructions 但有 2 个问题。
当我使用 "sylius_shop_user" 作为 table 名称时,在学说配置文件中,
它说这个 table 已经存在。 The table with name
'sylius_dev.sylius_shop_user' already exists.
当我想覆盖 shop_user 模型的 class 时,我收到此错误:Unrecognized option "shop_user" under "sylius_core.resources"
这是我对 1.0.0-alpha.1 的配置:)
sylius_user:
resources:
shop:
user:
classes:
model: AppBundle\Entity\ShopUser
repository: AppBundle\Entity\Repository\ShopUserRepository
form:
default: AppBundle\Form\Type\Api\UserType
sylius_resource:
resources:
app.shop_user:
classes:
model: AppBundle\Entity\ShopUser
repository: AppBundle\Entity\Repository\ShopUserRepository
controller: AppBundle\Controller\Api\UserController
sylius_api:
resources:
api_user:
classes:
model: "%sylius.model.shop_user.class%"
doctrine:
orm:
resolve_target_entities:
AppBundle\Entity\ShopUserInterface: AppBundle\Entity\ShopUser
ShopUser.php
namespace AppBundle\Entity;
use Sylius\Component\Core\Model\ShopUser as BaseShopUser;
class ShopUser extends BaseShopUser implements ShopUserInterface {...}
ShopUserInterface.php
namespace AppBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Sylius\Component\Core\Model\ShopUserInterface as BaseShopUserInterface;
interface ShopUserInterface extends BaseShopUserInterface {...}
ShopUserRepository.php
namespace AppBundle\Entity\Repository;
use Sylius\Bundle\CoreBundle\Doctrine\ORM\UserRepository as BaseUserRepository;
class ShopUserRepository extends BaseUserRepository implements ShopUserRepositoryInterface {...}
ShopUserRepositoryInterface.php
namespace AppBundle\Entity\Repository;
use Sylius\Component\User\Repository\UserRepositoryInterface;
interface ShopUserRepositoryInterface extends UserRepositoryInterface {...}
/src/AppBundle/Resources/config/doctrine/ShopUser.orm.xml
<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="AppBundle\Entity\ShopUser" table="sylius_shop_user" repository-class="AppBundle\Entity\Repository\ShopUserRepository">
...
</entity>
</doctrine-mapping>
src/AppBundle/Resources/config/serializer/Entity.ShopUser.yml
AppBundle\Entity\ShopUser:
exclusion_policy: ALL
我想覆盖 SyliusCoreBundle 的 shop_user 模型,我遵循了 instructions 但有 2 个问题。
当我使用 "sylius_shop_user" 作为 table 名称时,在学说配置文件中, 它说这个 table 已经存在。
The table with name 'sylius_dev.sylius_shop_user' already exists.
当我想覆盖 shop_user 模型的 class 时,我收到此错误:
Unrecognized option "shop_user" under "sylius_core.resources"
这是我对 1.0.0-alpha.1 的配置:)
sylius_user:
resources:
shop:
user:
classes:
model: AppBundle\Entity\ShopUser
repository: AppBundle\Entity\Repository\ShopUserRepository
form:
default: AppBundle\Form\Type\Api\UserType
sylius_resource:
resources:
app.shop_user:
classes:
model: AppBundle\Entity\ShopUser
repository: AppBundle\Entity\Repository\ShopUserRepository
controller: AppBundle\Controller\Api\UserController
sylius_api:
resources:
api_user:
classes:
model: "%sylius.model.shop_user.class%"
doctrine:
orm:
resolve_target_entities:
AppBundle\Entity\ShopUserInterface: AppBundle\Entity\ShopUser
ShopUser.php
namespace AppBundle\Entity;
use Sylius\Component\Core\Model\ShopUser as BaseShopUser;
class ShopUser extends BaseShopUser implements ShopUserInterface {...}
ShopUserInterface.php
namespace AppBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Sylius\Component\Core\Model\ShopUserInterface as BaseShopUserInterface;
interface ShopUserInterface extends BaseShopUserInterface {...}
ShopUserRepository.php
namespace AppBundle\Entity\Repository;
use Sylius\Bundle\CoreBundle\Doctrine\ORM\UserRepository as BaseUserRepository;
class ShopUserRepository extends BaseUserRepository implements ShopUserRepositoryInterface {...}
ShopUserRepositoryInterface.php
namespace AppBundle\Entity\Repository;
use Sylius\Component\User\Repository\UserRepositoryInterface;
interface ShopUserRepositoryInterface extends UserRepositoryInterface {...}
/src/AppBundle/Resources/config/doctrine/ShopUser.orm.xml
<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="AppBundle\Entity\ShopUser" table="sylius_shop_user" repository-class="AppBundle\Entity\Repository\ShopUserRepository">
...
</entity>
</doctrine-mapping>
src/AppBundle/Resources/config/serializer/Entity.ShopUser.yml
AppBundle\Entity\ShopUser:
exclusion_policy: ALL