gonzo/bakery

Doctrine ORM 到 Magento 2 映射器

该包的官方仓库似乎已消失,因此该包已被冻结。

安装: 36

依赖: 0

建议: 0

安全: 0

类型:magento2-module

0.0.1 2018-09-28 12:00 UTC

This package is auto-updated.

Last update: 2019-10-16 23:14:34 UTC


README

Bakery 是一个用于 Magento 2 的脚手架工具。该工具将基于您提供的 Doctrine 实体生成一个新的 Magento 模块。新创建的 Magento 模块将包含执行 Magento 后端基本 CRUD 操作所需的一切。

此代码目前正在开发中,这意味着它随时可能出错 ¯\_(ツ)_/¯

  • 请参阅 文档 以获取所有可用注释的完整列表。
  • 请参阅 路线图 了解短期和长期开发目标。

安装

  1. 使用 composer require gonzo/bakery --dev 安装 Bakery 模块
  2. 使用 php bin/magento module:enable Gonzo_Bakery 启用模块
  3. 编译 Magento 的 DI 容器 php bin/magento setup:di:compile
  4. 设置模块 php bin/magento bakery:init,该命令在 Magento 根目录中创建一个 Entities 目录,并将注册一些全局信息。

创建 Doctrine 实体

  1. Entities 目录中创建一个 Doctrine 实体类,并为其提供相同的命名空间,例如:namespace Entities;
  2. 添加 Doctrine 注释的使用语句:use Doctrine\ORM\Mapping as ORM;
  3. 根据您的规范组合实体类

添加 Bakery 特定的注释(可选)

Doctrine 注释仅描述数据库表将如何看起来,以及在某种程度上如何填充表的单个表单字段。例如:Doctrine 注释 @ORM\Column(type="boolean") 将创建一个数据类型为 TINYINT(1) 的列,并为相关表单创建一个 复选框 表单组件。

然而,在某些情况下,仅使用 Doctrine 注释无法正确描述列的用途。例如,Doctrine 注释 @ORM\Column(type="string", length=255) 将创建一个数据类型为 VARCHAR(255) 的列,该列可以存储从简单的标题到上传文件的文件名,甚至是颜色的十六进制值。在这种情况下,可以添加 Bakery 注释来进一步指定属性的用途。

避免使用任何 Bakery 注释将导致 默认 表单元素。因此,一个简单的 @ORM\Column(type="string", length=255) Doctrine 注释将导致一个 输入 表单元素。

Bakery 注释添加的方式与 Doctrine 注释类似,要么描述表单元素的外观,要么描述网格列的外观。显然,实体属性可以同时注释为表单元素注释和列元素注释。

向实体类添加使用语句

要启用 bakery 注释,请向实体类添加以下使用语句:use Gonzo\Bakery\Annotation as Bakery;

向实体类添加 Bakery 注释

简单地将 Bakery 注释添加到属性的 DocBlock 中。例如,我们将创建一个用于记录我们的音乐收藏的 Album 实体。我们只对专辑的标题和封面艺术感兴趣,因此这个实体可能看起来像这样

<?php
namespace Entities;

use Doctrine\ORM\Mapping as ORM;
use Gonzo\Bakery\Annotation as Bakery;

/**
 * @ORM\Entity()
 */
class Album
{
    /**
     * @ORM\Column(name="album_id", length=8, type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Id()
     */
    protected $albumId;

    /**
     * @ORM\Column(name="title", type="string")
     */
    protected $title;

    /**
     * @ORM\Column(name="cover", type="string", length=255, nullable=true)
     * @Bakery\FileUploader(fileTypes={"jpg", "jpeg", "gif", "png"}, name="cover")
     */
    protected $cover;

}

注意,添加了FileUploader注解来指示应使用FileUploader组件来管理我们专辑表的封面艺术。该注解描述了允许此组件使用的文件扩展名数组,并且该注解名为cover

构建新模块

当你对实体配置满意时,只需使用php bin/magento bakery:scaffold创建一个新模块。

此命令会自动将新模块写入<magento_root>/var/tmp/bakery_output,以便你进行检查。

一切顺利时,运行php bin/magento bakery:scaffold -w将其写入app/code目录或手动复制。请注意,每次重新运行php bin/magento bakery:scaffold -w时,你已对生成的代码所做的任何更改都将被覆盖。你有责任将任何更改提交到版本控制系统。通常,在最后调整实体后,再次运行scaffold命令,然后进行任何更改是一个好主意。

生成的代码中包含一个Setup/InstallSchema.php文件,该文件将保存所有的数据库迁移。

命令选项

选项缩写描述默认值
--vendor-d期望的供应商名称
--module-m期望的模块名称
--entities-e实体目录的路径/Entities
--base-dir-b生成模块将被放置的目录的绝对路径/var/tmp/bakery-output

启用新模块

需要通过运行php bin/magento module:enable YourVendor_YourModule来启用新模块

由于这是一个像其他模块一样的模块,因此还需要运行以下命令来通知Magento新代码并运行迁移

- php bin/magento setup:upgrade
- php bin/magento setup:di:compile
- php bin/magento cache:flush  

常见问题解答

这个工具是做什么的?

它帮助你在自定义表中创建表单和网格。它读取你提供的实体配置,并在app/code中创建一个Magento模块,作为你构建的起点。通过设置所有基本的样板代码用于CRUD操作,你可以节省时间并跳过编写所有这些重复且容易出错的代码。

这个工具不能做什么?

  • Bakery不会在Magento 2中实现Doctrine。
  • Bakery不会以任何方式在Magento 2中实现Active Record模式。
  • Bakery不会考虑任何具有InheritanceType和父类的实体
  • Bakery不会创建UpdateSchema或UpdateData类

这个工具是为谁编写的?

这个工具是为以下Magento 2开发者编写的

  • 熟悉Doctrine
  • 需要创建自定义模块以某种方式扩展Magento 2,但苦于从头开始创建网格和表单所需的工作量。
  • 对花费太多时间调试表单或网格感到厌倦,因为ui-component xml配置有误,没有显示有用的错误。