如何覆盖 SyliusCoreBundle 模型用户

2024-04-19

我尝试在模型用户(SyliusCoreBundle/Model/User)中添加一个新字段“电话”。 避免接触SyliusCoreBundle,

我创建了一个新的捆绑包“ShopBundle”,它位于其他 sylius 捆绑包旁边以覆盖基本用户类:

src/Sylius/Bundle/ShopBundle

在文件夹 ShopBundle 中:

> /Controller(empty)

> /DependencyInjection(empty)

> /Model

>         /User.php
> /Resources

>         /config/doctrine/model/user.orm.xml
>         /config/service.xml (empty)
> SyliusShopBundle.php

In file src/Sylius/Bundle/ShopBundle/Model/User.php, 我有 :

    <?php

namespace Sylius\Bundle\ShopBundle\Model;

use Sylius\Bundle\CoreBundle\Model\User as BaseUser;

class User extends BaseUser
{
  protected $mobile;

  /**
   * {@inheritdoc}
   */
  public function setMobile($mobile)
  {
    $this->mobile = $mobile;
  }
  /**
   * {@inheritdoc}
   */
  public function getMobile()
  {
    return $this->mobile;
  }
}

In file src/Sylius/Bundle/ShopBundle/Resources/config/doctrine/model/user.orm.xml, 我有 :

<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xmlns:gedmo="http://gediminasm.org/schemas/orm/doctrine-extensions-mapping"
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
                                      http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">

    <mapped-superclass name="Sylius\Bundle\ShopBundle\Model\User" table="sylius_user">

        <field name="mobile" column="mobile" type="string" nullable="true" />

    </mapped-superclass>

</doctrine-mapping>

In file src/Sylius/Bundle/ShopBundle/SyliusShopBundle.php, 我有 :

 class SyliusShopBundle extends Bundle
{
    /**
     * Return array with currently supported drivers.
     *
     * @return array
     */
    public static function getSupportedDrivers()
    {
        return array(
            SyliusResourceBundle::DRIVER_DOCTRINE_ORM
        );
    }
}

我在 app/AppKernel.php 中添加这一行

new Sylius\Bundle\ShopBundle\SyliusShopBundle(),

最后,我确实赞扬:

php app/console doctrine:schema:update --dump-sql

我在数据库中没有任何可更新的内容。

我错过了哪一部分?我该怎么做才能让它发挥作用?谢谢 !!


我在文件夹 DependencyInjection 中添加了两个文件

配置.php

class Configuration implements ConfigurationInterface
{
    public function getConfigTreeBuilder()
    {
        $treeBuilder = new TreeBuilder();
        $rootNode = $treeBuilder->root('sylius_shop');

        $rootNode
            ->addDefaultsIfNotSet()
            ->children()
                ->scalarNode('driver')->cannotBeOverwritten()->isRequired()->cannotBeEmpty()->end()
            ->end()
        ;

        $this->addClassesSection($rootNode);

        return $treeBuilder;
    }

    /**
     * Adds `classes` section.
     *
     * @param ArrayNodeDefinition $node
     */
    private function addClassesSection(ArrayNodeDefinition $node)
    {
        $node
            ->children()
                ->arrayNode('classes')
                    ->addDefaultsIfNotSet()
                    ->children()
                        ->arrayNode('user')
                            ->addDefaultsIfNotSet()
                            ->children()
                                ->scalarNode('model')->defaultValue('Sylius\\Bundle\\ShopBundle\\Model\\User')->end()
                            ->end()
                        ->end()
                    ->end()
                ->end()
            ->end()
        ;
    }
}

SyliusShopExtension.php

<?php

namespace Sylius\Bundle\ShopBundle\DependencyInjection;

use Sylius\Bundle\ResourceBundle\DependencyInjection\SyliusResourceExtension;
use Symfony\Component\DependencyInjection\ContainerBuilder;


class SyliusShopExtension extends SyliusResourceExtension
{
    /**
     * @var array
     */
    private $bundles = array();

    /**
     * {@inheritdoc}
     */
    public function load(array $config, ContainerBuilder $container)
    {
        $this->configDir = __DIR__.'/../Resources/config';

        $this->configure($config, new Configuration(), $container, self::CONFIGURE_LOADER | self::CONFIGURE_DATABASE | self::CONFIGURE_PARAMETERS);
    }


}

  1. 它应该是User.orm.xml, not user.orm.xml.
  2. 您必须在下面配置类sylius_core -> classes -> user -> model node.
  3. 您不应该通过 Sylius 捆绑包来激发您的捆绑包,并且绝对不要将其放在“Sylius”命名空间下。只需创建一个非常基本的 Symfony 包并将您的 User 实体放在Entity命名空间,Symfony 不会在下面看到它Model.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何覆盖 SyliusCoreBundle 模型用户 的相关文章

随机推荐

  • Visual Studio 2010 调试速度慢

    我在使用 Visual Studio 2010 时遇到问题 当我开始调试时 它运行缓慢 Internet Explorer 打开 但网站加载速度极其缓慢 我的同事和我在同一个项目上工作 他没有任何这样的问题 我的硬件是4G内存 Intel
  • Java Collections.sort(nodes) 使用什么排序?

    我认为是MergeSort 即O n log n 但是 以下输出不同意 1 0000000099000391 0000000099000427 1 0000000099000427 0000000099000346 5 0000000099
  • 将 functools.partial 与部分参数一起使用[重复]

    这个问题在这里已经有答案了 尝试部分操作时 我观察到以下行为 首先 我定义了一个函数foo它需要 2 个非关键字参数 gt gt gt def foo salutation name print salutation name 然后 我使用
  • DJango过滤器查询集

    我是 DJango 和 DRF 的新手 并被要求管理一些 DJango DRF 相关代码 经过大量搜索后 我仍然无法找到有关 filter queryset 如何工作以及如何与不同参数一起使用的完整示例 在某些地方我看到它的用法如下 sel
  • 投票数据库架构

    民意调查的最佳数据库架构是什么 一对多关系对此有好处吗 我正在考虑有两张桌子 poll questions int id varchar body datetime created at datetime updated at poll a
  • 使用 python 字符串格式插入制表符

    我正在尝试使用 format 形成一个字符串 但无法弄清楚这一点 lems scaena persona improbus for i in lems print format i t whatever 但拉环并没有像我想象的那样拉紧 实际
  • 如何解决“在 iOS 上使用 expo 播放视频但没有声音”的问题

    我使用世博会的视频组件 我可以播放视频 但在 iOS 中没有声音 在安卓上没问题 我该如何解决它
  • 在运行时停止/启动 WCF MEX 服务

    是否可以 如何在运行时停止和启动自托管 WCF 服务的 HTTP MEX 侦听器而不影响主 WCF 服务 请不要问我为什么要这样做 这是一种绕过别人人为限制的黑客行为 在重新测试和代码清理后重新添加了这个答案 这是我添加到我的基于 WCF
  • R:sample()命令受约束

    我试图从 0 到 7 随机抽取 7 个数字 有替换 但受到所选数字加起来为 7 的约束 例如 输出 0 1 1 2 3 0 0 没问题 但输出1 2 3 4 5 6 7 不是 有没有办法在添加约束的情况下使用示例命令 我打算使用以示例命令作
  • “在预期的位置未找到 FROM 关键字”

    SELECT distinct REPLACE CM NAME as CM NAME TO CHAR Booking Date MM DD YYYY AS Booking Date where Booking Date 03 20 2018
  • Logstash 解析时间戳半天上午/下午

    Logstash 新手 真的很喜欢它 尝试解析包含时间戳的 CSV 文件 想要解析时间戳并将其用作 timestamp字段 我的 CSV 输入示例 input stdin filter filter the input by csv i e
  • 使用 Microsoft.Web.Administration 远程管理 IIS 时身份验证期间出现 COMException

    设想 我需要远程管理与请求更改的服务器位于同一域的 IIS 服务器 创建和销毁应用程序 我有一个应用程序池设置为在授权帐户下运行 我已经使用 IIS 管理器和 Web 池成功运行的帐户测试了远程配置 因此我知道权限是正确的 我通过代码执行此
  • 为什么 Linq Cast<> 帮助器不能与隐式转换运算符一起使用?

    在决定重复投票之前 请阅读全文 我有一个实现的类型implicit cast运算符转换为另一种类型 class A private B b public static implicit operator B A a return a b c
  • 根据 pandas 中另一列的值创建新列

    我有这个 pandas 数据框 其 代码 列包含顺序分层代码 我的目标是使用每个层次级别代码及其名称创建新列 如下所示 原始数据 Code Name 0 A USA 1 AM Massachusetts 2 AMB Boston 3 AMS
  • 通过不加载主题和插件使 WordPress WP-API 更快

    我想更快地向 WordPress API 发出请求 我的API是在插件中实现的 使用register rest route来注册我的路线 然而 由于这是一个插件 所以所有内容都已加载 子主题和主题 并且基本上对该 API 的查询需要半秒 因
  • SQLite 查询中的 JavaScript for 循环

    我创建了一个函数 它将从我的数据库返回字符串 path function getAudio mid cb mid is an array containing the id to some multimedia files for i 0
  • 在 VSTS 托管代理上使用 PowerShellGet

    我在构建过程中使用 Visual Studio Team Services VSTS 托管的构建代理 我的构建主要依赖于 PowerShell 步骤 该步骤调用我在 git 中的脚本 在此脚本中 我想使用 PowerShellGet 管理
  • 关闭文件而不退出 VIM 应用程序?

    我用 e and w用于编辑和写入文件的命令 我不确定是否有 close 命令可以在不离开Vim的情况下关闭当前文件 I know that the q command can be used to close a file but if
  • 如何在嵌入式 Jetty 上设置 SSL?

    我已经嵌入了 jetty 7 x 基本上只是创建一个 SelectChannelConnector 来侦听端口 80 和 WebAppContext 来部署单个 WAR 目录 我现在需要添加 SSL 所有密钥库内容都已完成 我本想只添加一个
  • 如何覆盖 SyliusCoreBundle 模型用户

    我尝试在模型用户 SyliusCoreBundle Model User 中添加一个新字段 电话 避免接触SyliusCoreBundle 我创建了一个新的捆绑包 ShopBundle 它位于其他 sylius 捆绑包旁边以覆盖基本用户类