ctasca / mage-bundle
从一组模板中轻松创建 Magento/Adobe Commerce PHP/XML/JS 文件
Requires
- php: >=7.4
This package is auto-updated.
Last update: 2024-09-06 06:36:43 UTC
README
通过命令行从一组模板中轻松创建 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-controller
或 mage-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}}