Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重写自定义Sylius包中的变量类时出错_Php_Symfony_Sylius - Fatal编程技术网

Php 重写自定义Sylius包中的变量类时出错

Php 重写自定义Sylius包中的变量类时出错,php,symfony,sylius,Php,Symfony,Sylius,我一直在尝试按照指南在我自己的包中派生Sylius:VariableProductBundle:Variant的子类 我创建了一个新的bundle,AcmeVariableProductBundle,它是我通过所述方法从SyliusVariableProduct bundle派生的 在遵循Sylius文档中概述的覆盖模型的步骤后,出现以下错误: Twig_Error_运行时:在呈现模板期间引发异常("在链配置的命名空间Sylius\Bundle\CartBundle\Entity、FOS\Use

我一直在尝试按照指南在我自己的包中派生Sylius:VariableProductBundle:Variant的子类

我创建了一个新的bundle,AcmeVariableProductBundle,它是我通过所述方法从SyliusVariableProduct bundle派生的

在遵循Sylius文档中概述的覆盖模型的步骤后,出现以下错误:

Twig_Error_运行时:在呈现模板期间引发异常("在链配置的命名空间Sylius\Bundle\CartBundle\Entity、FOS\UserBundle\Entity、Acme\Bundle\CatalogeBundle\Entity、Sylius\Bundle\SalesBundle\Model、Sylius\Bundle\MoneyBundle\Model、Sylius\Bundle\SettingsBundle\Model、Sylius\Bundle\CartBundle\Model、Sylius\Bundle中未找到类“Acme\Bundle\Bundle\VariableProductBundle\Model\Model”\ProductBundle\Model,Sylius\Bundle\VariableProductBundle\Model,Sylius\Bundle\TaxationBundle\Model,Sylius\Bundle\ShippingBundle\Model,Sylius\Bundle\PromotionsBundle\Model,Sylius\Bundle\AddressingBundle\Model,Sylius\Bundle\InventoryBundle\Model,Sylius\Bundle\TaxonomiesBundle\Model,Sylius\Bundle\Corebndle\MSyliusWebBundle:Frontend/Homepage:main.html.twig第2行中的“odel,FOS\UserBundle\Model”)

我的类定义如下:

namespace Acme\Bundle\VariableProductBundle\Model;

use Doctrine\Common\Collections\ArrayCollection;
use Sylius\Bundle\VariableProductBundle\Model\Variant as BaseVariant;

class Variant extends BaseVariant
{
    ...
}
我在以下位置创建了一个xml文件:Acme/Bundle/VariableProductBundle/Resources/config/doctor/Variant.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">

    <mapped-superclass name="Acme\Bundle\VariableProductBundle\Model\Variant" table="sylius_variant">
        <field name="sku" column="sku" type="string" nullable="true" />
        <field name="price" column="price" type="integer" />
        <field name="onHand" column="on_hand" type="integer" />
        <field name="availableOnDemand" column="available_on_demand" type="boolean"/>

        <one-to-many field="images" target-entity="Sylius\Bundle\CoreBundle\Model\VariantImage" mapped-by="variant">
            <cascade>
                <cascade-all />
            </cascade>`
        </one-to-many>
    </mapped-superclass>

</doctrine-mapping>

有人能告诉我缺少什么吗?

Symfony默认情况下不在“模型”目录中查找实体。您应该将变体模型移动到“实体”目录“名称空间。Sylius使用自定义编译器过程来实现此行为,但对于您的应用程序来说,这根本不是必需的。

可能为时已晚,但对于其他应用程序:这对我来说很有效

在MyBundle.php文件中(在bundle的根目录下),您可以像这样覆盖构建函数:

    public function build(ContainerBuilder $container)
    {
        $mappings = array(
            realpath(__DIR__ . '/Resources/config/doctrine/model') => 'Namespace\MyBundle\Model',
        );
        $container->addCompilerPass(DoctrineOrmMappingsPass::createXmlMappingDriver($mappings, array('doctrine.orm.entity_manager'), 'sylius_core.driver.doctrine/orm'));
    }
    public function build(ContainerBuilder $container)
    {
        $mappings = array(
            realpath(__DIR__ . '/Resources/config/doctrine/model') => 'Namespace\MyBundle\Model',
        );
        $container->addCompilerPass(DoctrineOrmMappingsPass::createXmlMappingDriver($mappings, array('doctrine.orm.entity_manager'), 'sylius_core.driver.doctrine/orm'));
    }