irishtitan/handshake

围绕 Magento 2 的 Laravel 风格包装器。

安装: 70

依赖项: 0

建议者: 0

安全: 0

星星: 37

关注者: 5

分支: 8

公开问题: 3

类型:magento2-module

v1.4.1 2017-08-15 16:06 UTC

This package is not auto-updated.

Last update: 2024-09-29 01:53:17 UTC


README

Latest Stable Version GitHub issues GitHub forks GitHub stars Total Downloads License Twitter

我不再积极维护这个包。如果你需要使用它,请随意分支或贡献一个拉取请求。

Handshake 是一个 Magento 2 模块,旨在使 Magento 2 模块开发体验更简单、更优雅。它通过用 Laravel 的 Eloquent 库替换默认的 Magento 2 ORM 系统来实现这一点。任何使用 Handshake 构建的定制 Magento 2 模块都可以使用 Laravel 风格的迁移、种子、模型、会话等,以及相应的命令。

Handshake 已在 Magento 版本 2.1.5 - 2.1.8 上进行测试。

安装

在安装 Handshake 之前,请确保您有一个工作的 Magento 2 复制。还请确保 Magento 2 已正确配置,因为 Handshake 将尝试使用 Magento 2 的数据库配置来运行您的迁移、种子等。

您可以使用 composer 安装 Handshake

composer require irishtitan/handshake

在 composer 拖入 Handshake 后,您需要启用 Handshake

php bin/magento module:enable IrishTitan_Handshake

通过运行以下命令完成安装

php bin/magento setup:upgrade

如果一切顺利,您现在可以使用 Handshake 开始开发 Magento 2 模块了。

对象管理器

我们应该使用对象管理器吗?我不认为有人真正知道。无论如何,自动构造函数注入是 Magento 推荐的。然而,在某些情况下,您将需要使用对象管理器。相反,您可以使用 IrishTitan\Handshake\Core\App 类以更优雅的方式完成。

use Magento\Catalog\Model\ProductFactory;
use IrishTitan\Handshake\Core\App;
 
$productFactory = App::make(ProductFactory::class);

您还可以使用 App::get() 获取给定类的实例,如果它已经被实例化。

产品

以前,当您与 Magento 2 产品合作时,您可能需要使用 ProductFactoryProductRepositoryProductCollection 等等来完成任务。现在不再是这样了。相反,您可以使用 IrishTitan\Handshake\Facades\Product 门面执行多项不同操作。例如

要按其 ID 查找产品,请使用 find 方法

$product = Product::find(23);

要按其 SKU 查找产品,请使用 whereSku 方法

$product = Product::whereSku('PROD0001');

要获取 Magento 2 目录中的所有产品,请使用 all 方法

$products = Product::all();

要向产品添加图片,请使用 addImage 方法

$product = Product::find(123);

$product->addImage('path/to/first/image.jpg');
$product->addImage('path/to/second/image.jpg');

或者,您也可以这样做,因为所有 Handshake 方法都是链式可用的

Product::find(123)
    ->addImage('path/to/first/image.jpg')
    ->addImage('path/to/second/image.jpg');

要获取产品具有的所有图片的数组,请使用 images 方法

$product = Product::whereSku('PROD0002');
$images = $product->images();

要获取产品所在的全部类别,请使用 categories 方法

$product = Product::find(487);
$categories = $product->categories();

要创建新产品,请使用 create 方法

$bmw = Product::create([
    'name' => 'BMW',
    'sku' => 'BMW0001',
    'url_key' => 'bmw0001',
    'price' => 65000
]);

要将产品分配给类别,请使用 assignToCategory 方法

$category = Category::find(2);
$product = Product::find(13);

$product->assignToCategory($category);

在上面的示例中,whereSkufind 都返回 IrishTitan\Handshake\Core\Catalog\Product 的实例。请查看此类以更好地了解其工作原理。

类别

以前,当您与 Magento 2 类别合作时,您可能需要使用 CategoryFactoryCategoryRepositoryCategoryCollection 等等来完成任务。现在不再是这样了。相反,您可以使用 IrishTitan\Handshake\Facades\Category 门面执行多项不同操作。例如

要按其 ID 查找类别,请使用 find 方法

$category = Category::find(12);

如果找到,则 find 方法将返回 IrishTitan\Handshake\Core\Catalog\Category 的实例;如果没有找到该类别,则返回 null。您还可以使用 findOrFail($id) 方法,如果类别未找到则抛出错误。

要按其 URL 键查找类别,请使用 whereUrlKey 方法

$category = Category::whereUrlKey('shoes');

要按其名称查找类别,请使用 whereName 方法

$category = Category::whereName('Shoes');

如果有多个类别具有相同的名称,则将返回第一个。

要获取所有类别,请使用 all 方法

$categories = Category::all();

要将产品分配给类别,请使用 addProduct 方法

$nike = Product::whereSku('NIKE0001');

$category = Category::whereUrlKey('shoes');
$category->addProduct($nike);

如果您需要嵌套类别,可以使用 setParent 方法

$cars = Category::whereUrlKey('cars');
$bmws = Category::whereUrlKey('bmws');

$bmws->setParent($cars);
$bmws->save();

以上只是您可以使用的少数几种方法。请查看 IrishTitan\Handshake\Core\Catalog\Category 类以了解其他可用方法。

CLI 命令

在编写 Magento 2 的自定义功能,例如 ERP 集成或自定义脚本时,通常将其作为 CLI 命令来完成会更简单。Magento 2 有一个命令类,您可以从它继承,但编写您自己的自定义命令仍然相当繁琐。相反,您可以使用 Handshake 命令类。在使用以下命令之前,请确保您的模块具有 Commands 目录。当然,如果您使用 Handshake 的 handshake:make:module 命令创建了模块,则该目录已经存在。

要创建一个新的命令,以下是您要使用的语法

php bin/magento handshake:make:command Namespace Module CommandName

例如,您可以这样做

php bin/magento handshake:make:command Acme Forum ImportThreadsCommmand

这将在 app/code/Acme/Forum/Commands 中创建一个 ImportThreadsCommmand.php 文件。您的命令也将自动在 etc/di.xml 文件中注册,因为所有 Magento 2 命令都必须在此处注册。您可能需要运行 php bin/magento cache:clean 以使您的命令显示在命令列表中。

命令语法

例如,如果您想要能够运行

php bin/magento forum:threads:import

您将需要更新命令文件中的命令签名属性。

/**
 * The command syntax.
 *
 * @var string
 */
protected $signature = 'forum:threads:import';
命令参数

如果您需要命令接受参数,例如这样

php bin/magento forum:threads:import MagentoThreads

您可以在命令类的 arguments 属性中定义您的参数

/**
 * The arguments the command accepts.
 *
 * @var array
 */
protected $arguments = [
 
    'thread' => [
        'mode' => 'required',
        'description' => 'The thread name to import.'
    ]
 
];

创建新模块

要创建新的 Magento 2 模块,您可以使用 handshake:make:module 命令

php bin/magento handshake:make:module Namespace Module

handshake:make:module 命令接受两个参数。 Namespace 是您的供应商名称,Module 是您模块的名称。

例如,php bin/magento handshake:make:module Acme Forum。这将创建一个名为 app/code/Acme/Forum 的新模块。

迁移

安装 Handshake 后,将创建一个新目录:app/handshake。这是您注册迁移和种子的地方。创建迁移后,将其添加到 migrations.php

要创建新的迁移,您可以使用 handshake:make:migration 命令

php bin/magento handshake:make:migration Namespace Module Migration

handshake:make:migration 命令接受三个参数。 Namespace 是您的供应商名称,Module 是您模块的名称,Migration 是您迁移的名称。

例如,php bin/magento handshake:make:migration Acme Forum CreatePostsTable

所有迁移都存储在相应模块的设置文件夹中。创建迁移后,您应将其在 app/handshake/migrations.php 中注册。

运行您的迁移

您可以使用 handshake:migrate 命令运行您的迁移。

您可以使用 handshake:migrate:rollback 命令回滚您的迁移。

许可

Handshake 模块是开源软件,根据 MIT 许可协议 许可。