如何通过 SyliusResourceBundle 使用 Sylius 创建新模型

2024-05-05

我找到并成功使用了有关如何覆盖 Sylius 中现有模型的文档,但我无法利用 SyliusResourceBundle 创建一个全新的模型。我猜如果你已经了解 Symfony2 的话这很容易吗?我仍在学习,所以这就是我所拥有的......我缺少什么?

我使用完整的 Sylius 安装作为我的基础,所以我从这里开始http://sylius.org/blog/simler-crud-for-symfony2 http://sylius.org/blog/simpler-crud-for-symfony2我有自己的“Astound Bundle”设置和几个覆盖和控制器。我将其添加到我的配置中:

sylius_resource:
    resources:
        astound.location:
            driver: doctrine/orm
            templates: AstoundWebBundle:Location
            classes:
                model: Astound\Bundle\LocationBundle\Model\Location

然后我做了:

<?php

namespace Astound\Bundle\LocationBundle\Model;

class Location implements LocationInterface
{
    /**
     * @var mixed
     */
    protected $id;

    /**
     * @var string
     */
    protected $name;

    public function getId()
    {
        return $this->id;
    }

    /**
     * {@inheritdoc}
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * {@inheritdoc}
     */
    public function setName($name)
    {
        $this->name = $name;
    }
}

随着:

<?php

namespace Astound\Bundle\LocationBundle\Model;


interface LocationInterface
{
    /**
     * Get Id.
     *
     * @return string
     */
    public function getId();

    /**
     * Get name.
     *
     * @return string
     */
    public function getName();

    /**
     * Set name.
     *
     * @param string $name
     */
    public function setName($name);
}

基于研究 Sylius 中的现有模型并查看 Doctrine 文档,我也做了这个:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Astound/Bundle/LocationBundle/Resources/config/doctrine/model/Location.orm.xml -->
<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://raw.github.com/doctrine/doctrine2/master/doctrine-mapping.xsd">

      <mapped-superclass name="Location" table="Locations">
          <id name="id" type="integer">
              <generator strategy="AUTO" />
          </id>

          <field name="name" type="string" />
      </mapped-superclass>
</doctrine-mapping>

有了这个,我期望能够运行应用程序/控制台学说:架构:更新--dump-sql并在数据库中查看名为“Locations”的新表,但我得到:

无需更新 - 您的数据库已与当前实体元数据同步。

我注意到在应用程序/控制台容器:调试我有 以下服务:

令人震惊的控制器位置
容器 Sylius\Bundle\ResourceBundle\Controller\ResourceController

令人震惊的经理位置
不适用doctrine.orm.default_entity_manager的别名

令人震惊的存储库位置
容器 Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository

所以我尝试添加一条到控制器上的indexAction的路由。添加到我的管理主路由配置文件中:

astound_location_index:
    pattern: /location
    methods: [GET]
    defaults:
        _controller: astound.controller.location:indexAction

但是,当我尝试在浏览器中访问路线 *app_dev.php/administration/location* 时,我得到:

找不到类“Astound\Bundle\LocationBundle\Model\Location” 在链中配置的命名空间

在写这篇文章时又进行了一些搜索,我发现http://brentertainment.com/other/docs/book/doctrine/orm.html http://brentertainment.com/other/docs/book/doctrine/orm.html听起来 Entities 文件夹中的 php 类应该神奇地显示在应用程序/控制台学说:映射:信息或“链配置的命名空间”?,但 Sylius 在任何地方都没有实体文件夹,所以一定有一些隐藏的魔法发生......我猜它在基本捆绑文件中?我尽力复制 Sylius 中其他捆绑包的做法,我做了这个:

<?php

namespace Astound\Bundle\LocationBundle;

use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\DoctrineOrmMappingsPass;
use Sylius\Bundle\ResourceBundle\DependencyInjection\Compiler\ResolveDoctrineTargetEntitiesPass;
use Sylius\Bundle\ResourceBundle\SyliusResourceBundle;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Bundle\Bundle;

/**
 * Astound LocationBundle
 */

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

    /**
     * {@inheritdoc}
     */
    public function build(ContainerBuilder $container)
    {
        $interfaces = array(
            'Astound\Bundle\LocationBundle\Model\LocationInterface'         => 'astound.model.location.class',
        );

        $container->addCompilerPass(new ResolveDoctrineTargetEntitiesPass('astound_location', $interfaces));

        $mappings = array(
            realpath(__DIR__ . '/Resources/config/doctrine/model') => 'Astound\Bundle\LocationBundle\Model',
        );

        $container->addCompilerPass(DoctrineOrmMappingsPass::createXmlMappingDriver($mappings, array('doctrine.orm.entity_manager'), 'astound_location.driver.doctrine/orm'));
    }
}

但这给了我这个:

ParameterNotFoundException:您请求的参数不存在 参数“astound_location.driver”。

我尝试将其添加到我的配置中:

astound_location:
    driver: doctrine/orm

但后来我得到这个错误:

FileLoaderLoadException:无法导入资源 “.../app/config/astound.yml”来自 “.../app/config/config.yml”。 (没有 扩展能够加载“astound_location”的配置(在 .../app/config/astound.yml)。寻找命名空间 “令人震惊的位置”

感谢所有阅读以上小说的人!答案一定很简单吧?!少了什么东西?


我刚刚遇到了同样的需求,即在扩展 Sylius 的同时创建一个新的模型/实体。我的第一次尝试是将我的新模型添加到 sylius_resource 的配置中。这导致在运行doctrine:schema:update 时出现相同的“Nothing to update”消息。

经过一番挖掘,我发现我定义为“映射超类”的新模型与其他 Sylius 模型不同,并没有“神奇地”转换为“实体”,因此学说认为不需要生成数据库表为了它。

所以我想快速的解决方案就是简单地将学说映射从“映射超类”更改为“实体”。例如。在你的例子中:

改变: 模型:Astound\Bundle\LocationBundle\Model\Location

模型:Astound\Bundle\LocationBundle\Entity\Location

并改变: 映射超类名称=“位置”表=“位置”到

实体名称=“位置”表=“位置”

但是,如果您更喜欢将模型保留为映射超类(并让 sylius 决定是否应将其转换为实体,以便您可以保持灵活性以便以后轻松扩展它),则需要仔细研究 sylius 是如何声明的他们的包裹。

按照“高级配置”Sylius 资源包 http://sylius.readthedocs.org/en/latest/bundles/SyliusResourceBundle/configuration.html#advanced-configuration为我成功了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过 SyliusResourceBundle 使用 Sylius 创建新模型 的相关文章

  • 如何编写在正文中包含锚标记的 Zend Framework URL?

    使用 Zend Framework 中设置的标准 MVC 我希望能够显示始终具有锚点的页面 现在我只是在 phtml 文件中添加一个带有 anchor 的无意义参数
  • 如何用javascript正确读取php cookies

    考虑这个 php 和 javascript 代码 然后我在控制台中看到的是 utma 111872281 291759993 1444771465 1445374822 1445436904 4 utmz 111872281 1444771
  • Zend Framework Zend_Form 装饰器: 位于按钮元素内部?

    我有一个像这样创建的按钮元素 submit new Zend Form Element Button submit submit gt setLabel My Button submit gt setDecorators array Vie
  • 如何在 codeigniter 查询中使用 FIND_IN_SET?

    array array classesID gt 6 this gt db gt select gt from this gt table name gt where array gt order by this gt order by q
  • mysqli bind_param 中的 NULL 是什么类型?

    我正在尝试将参数绑定到 INSERT INTO MySQLi 准备好的语句 如果该变量存在 否则插入 null 然后我知道 type variable i corresponding variable has type integer d
  • 检查文件权限

    我怎样才能检查file permissions 无需通过运行操作系统特定命令passthru or exec Use 文件权限 http php net fileperms功能 clearstatcache echo substr spri
  • 包含包含文件的 php 文件

    这是目录结构 global php includes class bootstrap php includes init php plugins myplugin php 这是这些文件中的代码 start php require inclu
  • 如何将粘在一起的单词分开?

    我有很多命名不好的文件 videoofmegoingtoschool avi 是否有一个库或某种算法可以正确地将其分离 video of me going to school avi 我不认为那里有什么 我可以想象一个程序 它使用单词词典并
  • JavaScript 中带前导零的数字发生变化

    我使用 print 语句从 php 调用 javascript 函数来打印 html 代码 并且传入一个整数 但是 在 php 中传递的值与 javascript 函数接收到的数字不匹配 我不知道为什么 这是调用 javascript 函数
  • PHP、jQuery 和 Ajax 调用乱序

    我正在使用 jQuery 进行 Ajax 调用 我有 x 数量的 Ajax 调用附加到 div 这些 Ajax 加载请求是由 PHP foreach 循环生成的 问题是它们渲染的顺序不正确 它们被设置在数组中
  • PHP 基本身份验证 file_get_contents() [重复]

    这个问题在这里已经有答案了 我需要从网站解析一些 XML 数据 XML 数据是原始格式 但在我需要进行身份验证之前 基于基本网络服务器的身份验证 使用用户名和密码 I tried homepage file get contents htt
  • 具有更改用户代理上下文的 file_get_contents 不起作用

    我正在尝试获取页面的阅读数和点赞数 网址是 https mp weixin qq com s NPavBeHc8VdWXeSL6kfLRg https mp weixin qq com s NPavBeHc8VdWXeSL6kfLRg 您必
  • 如何在 Twitter Card 中传递动态图像路径?

    我在用
  • 如何解决 Laravel 8 UI 分页问题?

    我在尝试最近发布的 laravel 8 时遇到了问题 我试图找出变化是什么以及它是如何工作的 当我这样做时 我遇到了分页 laravel 8 UI 变得混乱的问题 不知何故它发生了 有人可以帮助我吗 或者经历过同样的事情 像这样我在 lar
  • 简单的dom php解析获取自定义数据属性值

    HTML div class something ddsf PHP foreach dom gt find something data rel as this var dump this gt attr 我尝试了这个但错误 在其文档中找不
  • wordpress - 像 stackoverflow 中那样内嵌 ajax 注释

    我有一个 WordPress 博客 希望为人们提供与 stackoverflow 中添加评论相同的用户体验 有很多评论 ajax 插件 但我找不到一个可以使用的插件 它允许您在主页上内联 进入并添加评论 而无需先深入到单独的单个帖子页面 任
  • 监听文件夹和文件(更改)

    可以直接在 PHP 或 Node 上监听文件夹和文件的更改 通过事件 还是我需要创建自己的方法来执行此操作 Example 我需要听文件夹 user 如果我将一些文件添加到该目录中 PHP 或 Node 会收到信息并运行PathEvent
  • HTML 代码中的 PHP [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我用 HTML 代码编写了 PHP div div 但这出现在输出页面中 else print 我怎样才能让PHP执行 你的文件有一个 p
  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏
  • 如何在 PHP 中从字符串类名实例化? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何创建返回方法名称的新实例 不幸的是我收到这个错误 错误 类名必须是有效的对象或字符串 这是我的代码 class Foo public f

随机推荐

  • 避免使用 Grunt cssmin 任务来删除重复条目

    在我的 Gruntfile 中 我使用 cssmin grunt contrib cssmin 任务 就像是 cssmin css src dist styles css dest dist styles min css 问题是 style
  • 为什么 SuppressFormsAuthenticationRedirect 在 AuthorizeAttribute.HandleUnauthorizedRequest 覆盖中不起作用?

    我有一个 MVC 5 1 站点 其中的控制器具有单个 POST 操作 我有一个 Android 应用程序 我想使用基本身份验证发布到它 我创建了一个BasicAuthorizeAttribute类并将其应用到我的控制器 并出于测试目的使其拒
  • 如何使用 XQuery 将值列表从 XML 提取到行中?

    我有一个 XQuery 如下 DECLARE x XML SELECT x
  • Adobe Flash 项目的版本控制

    我正在处理一个非常复杂的 Flash 项目 该项目是我们为客户使用而部署的全套服务的一部分 对于我们的大多数软件源 Java PHP Javascript HTML 和一些其他语言的支持脚本 我们使用 subversion 进行版本控制和管
  • Android - 减少位图绘制的内存使用量

    我的应用程序中有一张地图 显示了 Gowalla 的位置 我使用带有简单默认标记的 ItemizedOverlay 但在绘制项目时 我将默认标记替换为从 Gowalla 下载 9 并缓存在磁盘上 的位置图标 问题是 如果屏幕上有很多位置 例
  • 查找 SSIS 包上次修改/部署日期 - SQL Server

    我想通过执行 SQL 查询找到 SSIS 包的最后修改日期 例如 下面的查询按降序返回过程的最后修改日期 我期待对 SSIS 包进行同样类型的查询 可以从DB获取这些信息吗 select name create date modify da
  • Pytest - 如何将参数传递给 setup_class?

    我有一些代码 如下所示 我得到了too few args当我运行它时出错 我没有打电话setup class明确地 所以不确定如何向它传递任何参数 我尝试用以下方法装饰该方法 classmethod 但仍然看到相同的错误 我看到的错误是这样
  • STDOUT->autoflush(1) 在 Perl 中做什么?

    我找到了有关 Perl 中自动刷新的各种信息 但找不到任何提及格式完全相同的行 STDOUT gt autoflush 1 这包含在我正在分析的程序中 我想更好地了解它的作用 程序开头还有这样一段话 use IO Handle 我认为这可能
  • 如何编辑多个 Pandas DataFrame 浮点列的字符串格式?

    我有一个pd DataFrame浮点数 import numpy as np import pandas as pd pd DataFrame np random rand 5 5 0 1 2 3 4 0 0 795329 0 125540
  • Chrome 扩展允许的键盘快捷键

    当您创建 Chrome 浏览器扩展程序时 您可以通过实现来建议键盘快捷键chrome 命令 https developer chrome com extensions commandsAPI 是否有允许的组合键的记录列表 Chrome 似乎
  • 遍历多行字符串

    我得到一些数据 def data some useless text n even more n finally interesting text 我怎样才能得到其中 有趣的部分 所以基本上所有行都不是以 开头的 Groovy 的一种选择是
  • 如何将sublime默认View设置为2行

    每次我打开 sublime 我都会执行以下操作 Layout then Rows 2 我可以更改设置 以便当我打开 sublime 时这是默认设置吗 我不知道有什么设置可以控制新创建的窗口的布局 它们始终创建为单个文件组 最好 最简单的事情
  • 是否可以从猫鼬文档中获取模型?

    var UserSchema new Schema Schema var User mongoose Model User UserSchema Model var user new User Document 仅给定文档 在本例中为用户
  • 如何使用实体框架更新特定记录的一个字段?

    我想要更新一个名叫 Pejman 的人的家庭情况 这是我的对象类 public class Person public int Id get set public string FirstName get set public string
  • 使用 CSS 更改文本选择颜色?

    我目前正在开发一个网站 我想更改文本选择颜色 我已经有点工作了 这是我的样式表中的代码 部分 selection background FF0099 color black text shadow none moz selection ba
  • 在 C、C++ 中实现腐蚀、膨胀

    我对二值图像的膨胀是如何完成的有理论上的了解 AFAIK 如果我的 SE 结构元素 是这样的 0 1 1 1 在哪里 代表中心 我的图像 二进制是这样的 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0
  • 在 SDK 中找不到文件夹“tools”

    我在做安卓开发使用 Eclipse 我已经下载了所有必需的软件 但遇到了与中讨论的相同的问题 无法在 Eclipse 中设置 Android Target https stackoverflow com questions 6384328
  • UITableView更改标题标题颜色

    我正在设计 UITableView 的样式应用内设置工具包 http InAppSettingsKit并想要更改标题的颜色 标签Without title and Text Field应该是白色的 如何才能做到这一点 Thanks 这是一个
  • 我们可以使用 axios 的 onDownloadProgress 来加载 API 吗?

    我需要使用 axios 创建一个用于在 React 项目中加载 API 的进度条 我为此发现了 onDownloadProgress 函数 但我不知道我们是否可以使用它来获取诸如加载百分比之类的信息 或者它是否仅用于文件下载 所以我不确定我
  • 如何通过 SyliusResourceBundle 使用 Sylius 创建新模型

    我找到并成功使用了有关如何覆盖 Sylius 中现有模型的文档 但我无法利用 SyliusResourceBundle 创建一个全新的模型 我猜如果你已经了解 Symfony2 的话这很容易吗 我仍在学习 所以这就是我所拥有的 我缺少什么