ctasca/mage-bundle

从一组模板中轻松创建 Magento/Adobe Commerce PHP/XML/JS 文件

安装: 374

依赖: 0

建议者: 0

安全: 0

星级: 28

关注者: 1

分支: 2

开放问题: 0

类型:magento2-module

v3.8.1 2024-08-06 06:27 UTC

README

License PHP Version Require

通过命令行从一组模板中轻松创建 Magento2/AdobeCommerce PHP/XML/JS 文件。

允许您定义自己的模板以及文件创建时提供的数据。

#1 安装

composer require --dev ctasca/mage-bundle

#2 将模板文件复制到 Magento 根目录 dev/ 目录

cd <magento_root>/vendor/ctasca/mage-bundle && composer run-script post-install-cmd

执行上述命令后,请检查您的 Magento 安装中的 dev/ 目录是否包含一个 mage-bundle/ 目录。

启用模块

bin/magento module:enable Ctasca_MageBundle

运行 setup:upgrade 命令

bin/magento setup:upgrade

运行 setup:di:compile 命令(可选)

如果 Magento 以 production 模式运行,您还需要运行

bin/magento setup:di:compile

可用命令

bin/magento magebundle:module:create

快捷键

bin/magento m:modu:c

在 app/code 目录中创建一个 Magento 模块骨架,生成所需的 registration.php 和 etc/module.xml 文件

bin/magento magebundle:controller:create

快捷键

bin/magento m:cont:c

在指定的模块中创建一个控制器命名空间和动作类。开发者将被提示选择一个路由器(标准或管理),以及从 mage-bundle/http-controllermage-bundle/adminhtml-http-controller 目录中可用的动作模板。

bin/magento magebundle:etc:xml:create

快捷键

bin/magento m:e:x:c

在指定公司的模块的 etc 目录中创建一个 XML 文件。指定模板应用到的区域后可以选择模板。

bin/magento magebundle:model:set:create

快捷键

bin/magento m:m:s:c

在指定的公司/模块中创建 Model、Resource Model 和 Collection 类。

bin/magento magebundle:repository:create

快捷键

bin/magento m:r:c

在指定的公司/模块中创建所有必需的 Repository 类。

重要:为了创建一个 Repository,必须存在一个实现接口的 Model。

如果您在创建模型集时需要使用 magebundle:model:set:create 命令创建 Repository,可以选择一个模板,它还会创建一个实现接口的 Model。

此命令将创建以下内容

  • Repository 的 API 接口
  • 模型(如果不存在)的 API 数据接口
  • API 数据搜索结果接口
  • 实现 Repository 接口的 Repository Model

创建 Repository 类后,不要忘记将首选项添加到您的 di.xml 中。例如

<config>
    <preference for="Company\Module\Api\Data\$MODEL_NAMEInterface" type="Company\Module\Model\$MODEL_NAME" />
    <preference for="Company\Module\Api\$MODEL_NAMERepositoryInterface" type="Company\Module\Model\$MODEL_NAMERepository" />
    <preference for="Company\Module\Api\Data\$MODEL_NAMESearchResultInterface" type="Company\Module\Model\$MODEL_NAMESearchResult" />
</config>
bin/magento magebundle:model:create

快捷键

bin/magento m:mode:c

在指定的公司/模块中创建 Model 类。还有一个模板可以创建接口而不是类。

bin/magento magebundle:block:create

快捷键

bin/magento m:b:c

在指定的公司/模块中创建模板 Block 类。

bin/magento magebundle:helper:create

快捷键

bin/magento m:h:c

在指定的公司/模块中创建 Helper 类。

bin/magento magebundle:customer-data:create

快捷键

bin/magento m:cu:c

在指定的公司/模块中创建 CustomerData 类。

bin/magento magebundle:view-model:create

快捷键

bin/magento m:v:c

在指定的公司/模块中创建 ViewModel 类。

bin/magento magebundle:observer:create

快捷键

bin/magento m:o:c

在指定的公司/模块中创建 Observer 类。

bin/magento magebundle:plugin:create

快捷键

bin/magento m:p:c

在指定的公司/模块中创建 Plugin 类。

bin/magento magebundle:cron:create

快捷键

bin/magento m:cr:c

在指定的公司/模块中创建 Cron 类。

bin/magento magebundle:console-command:create

快捷键

bin/magento m:cons:c

在指定的公司/模块中创建 Console Command 类。

bin/magento magebundle:data-patch:create

快捷键

bin/magento m:d:c

在指定的公司/模块中创建 Setup Data Patch 类。

bin/magento magebundle:schema-patch:create

快捷键

bin/magento m:s:c

在指定的公司/模块中创建 Setup Schema Patch 类。

bin/magento magebundle:api-interface:create

快捷键

bin/magento m:a:c

在指定的公司/模块中创建 API 接口。指定模板应用到的区域后可以选择模板。

对于功能 API 接口,生成的文件将创建在 Company/Module/Api 目录中

对于数据 API 接口,生成的文件将创建在 Company/Module/Api/Data 目录中

bin/magento magebundle:jquery-widget:create

快捷键

bin/magento m:j:c

在指定的公司/模块中创建 JQuery 小部件文件。JS 文件将创建在指定模块的 view/$AREA/web/js 目录中。

bin/magento magebundle:ui-component:create

快捷键

bin/magento m:u:c

在指定的公司/模块中创建一个 UI 组件 JS 文件。JS 文件将创建在指定模块的 view/$AREA/web/js 目录中。

bin/magento magebundle:logger:create

快捷键

bin/magento m:l:c

在指定的公司/模块中创建一个日志处理程序和日志类文件。

在执行此命令时可以指定日志文件名。

bin/magento magebundle:js:mixin:create

快捷键

bin/magento m:j:m:c

在指定的公司/模块中创建一个 JS 混合文件。JS 文件将创建在指定模块的 view/$AREA/web/js 目录中。

bin/magento magebundle:exception:create

快捷键

bin/magento m:e:c

在指定的公司/模块中创建一个异常类。

实用程序命令

bin/magento magebundle:util:encryptor

快捷键

bin/magento m:u:e

使用 Magento 加密密钥加密/解密字符串

设置自定义工作目录

默认情况下,MageBundle 在 app/code 目录以及指定模块的命名空间中创建文件

可以通过在 $MAGENTO-ROOT/dev/mage-bundle 目录中创建一个名为 pwd.json 的 JSON 文件来更改此行为,并指定执行 MageBundle 命令时创建文件时要使用的目录(相对于 Magento 根目录)。

这对于开发不在 app/code 目录中的模块非常有用

重要

pwd.json 中指定的目录必须以正斜杠结尾

pwd.json 示例

{
  "pwd" : "packages/my-package/"
}

关于模板文件

模板文件是用 PHP 8.1 版本编写的。

例如,http-get-action-json-result.tpl.php 包含以下内容

{{php}}
declare(strict_types=1);

namespace {{namespace}};

use Magento\Framework\App\Action\HttpGetActionInterface;
use Magento\Framework\App\RequestInterface;
use Magento\Framework\Controller\Result\JsonFactory;
use Magento\Framework\Controller\Result\Json;

class {{class_name}} implements HttpGetActionInterface
{
    /**
     * @param RequestInterface $request
     * @param JsonFactory $jsonFactory
     */
    public function __construct(
        private readonly RequestInterface $request,
        private readonly JsonFactory $jsonFactory
    ){}

    /**
     * @return Json
     */
    public function execute(): Json
    {
        $jsonResponse = $this->jsonFactory->create();
        return $jsonResponse->setData([]);
    }
}

要设置自己的模板,只需将它们放置在 MAGENTO_ROOT/dev/mage-bundle/$TEMPLATES_DIRECTORY/ 目录中,并在执行 magebundle create 命令时选择模板。

注意:当执行 magebundle:etc:xml:create 命令时,生成的文件与模板文件具有相同的名称。
要创建自己的模板,请使用要生成的 xml 文件名,并在模板文件名后附加 __$STRING。
例如,要定义自己的全局 acl.xml 模板,可以创建一个类似 acl__custom.tpl.xml 的模板文件。然后只需将其放置在 dev/mage-bundle/etc/global 目录中,并在执行创建命令时选择它。

重要:如果文件名在模块目录中已存在,则创建命令将不会执行,并且将在控制台上输出错误。
这是为了防止覆盖现有文件。

有关模块中定义的模板列表,请访问...

存储库维基页面

模板数据提供者

可以定义自己的模板以及生成时传递的数据。

为此,只需在 MAGENTO_ROOT/dev/mage-bundle/custom-data/#path-to-template# 目录中创建一个 JSON 文件,文件名与正在生成的模板文件完全相同,并定义一个 JSON 对象,其中包含设置器方法作为键及其对应值。

例如,对于在 Company/Module/etc 目录中生成的 XML 文件,自定义数据应存储在 MAGENTO_ROOT/dev/mage-bundle/custom-data/etc/#area#/#template_name#.tpl.json

示例

{
  "setTestNamespace" : "\\Ctasca\\MageBundle\\Test",
  "setCustomDataArray" : ["First Value", "Second Value"]
}

创建此 JSON 文件后,将可以在模板文件中使用占位符 {{test_namespace}}

由于 setCustomDataArray 提供一个数组,因此它将使用 PHP_EOL 分隔符进行 implode。要在模板文件中使用它,您将使用占位符:{{custom_data_array}}