alorian / bxorder
开源的bitrix订单组件
Requires
- php: ^7.0
- composer/installers: ~1
This package is auto-updated.
Last update: 2024-09-14 07:40:11 UTC
README
有关功能更详细的信息,以及相关讨论,请参阅以下链接:https://verstaem.com/bitrix/opensource-order/
在此,README.md中简要介绍了文章中的功能,但没有解释原因。
如何安装?
安装可以通过三种不同的方式进行
1. 通过Composer安装
要使包下载到正确的文件夹,在composer.json文件中指定到bitrix的路径。请注意extra部分
{ "name": "your/project", "authors": [ { "name": "Alexander Shubin", "email": "alorian@yandex.ru" } ], "require": {}, "extra": { "bitrix-dir": "./" } }
bitrix文件夹的路径需要相对于composer.json来指定。例如,如果composer.json文件位于/local/libs中,则需要指定"bitrix-dir": "../../bitrix"。默认情况下,安装器认为composer.json文件位于document_root。如果没有指定正确的bitrix-dir,则将在composer.json旁边创建一个名为bitrix/modules/opensource.order/的文件夹。
指定了正确的bitrix-dir后执行
$ composer require alorian/bxorder
执行命令后,打开市场模块列表/管理面板/合作伙伴模块.php?lang=ru,如果bitrix-dir指定正确,则将看到带有模块opensource.order的行。在下拉菜单中点击“安装”。
2. 从市场安装
通过以下链接转到https://marketplace.1c-bitrix.ru/solutions/opensource.order/并像往常一样安装解决方案。如果页面无法打开,则可能是解决方案还在审核中。
3. 手动安装
下载存档https://github.com/alorian/bxorder/archive/master.zip并将其内容手动解压到模块文件夹中 -- /bitrix/modules或/local/modules。
在模块文件夹中,您应该有一个名为opensource.order的文件夹,而不是bxorder-master,将存档中的bxorder-master文件夹重命名。这样,到include.php文件的完整路径应该是/bitrix/modules/opensource.order/include.php或/local/modules/opensource.order/include.php
解压缩存档后,打开市场模块列表/管理面板/合作伙伴模块.php?lang=ru,找到带有模块opensource.order的行,并在下拉菜单中点击“安装”。
安装任何一种方式后,将组件opensource:order放置在所需的页面上。
如何使用?
作为程序员,您需要做什么来集成布局?在最简单的情况下,您只需要在组件模板中创建一个表单(HTML标签form),在提交时将五个变量传递到服务器
1. person_type_id. 包含付款者类型的变量。
2. properties[]. 包含订单属性的变量数组。例如,如果属性的符号代码是FIO,则将输入的name属性设置为properties[FIO]。如果变量是多个,则设置为name=properties[FIO][]
3. delivery_id. 在最简单的情况下,这是一个单选框input,其属性name=delivery_id
4. pay_system_id. 与运输相同,这也是一个单选框input,只是属性name=pay_system_id
5. save. 如果变量save=y,则组件将保存订单。在所有其他情况下,组件仅更新订单对象中的数据并返回模板。
是的,就这么简单。创建一个包含这五个变量的表单,您就大功告成了。这并不是开源组件所能做的全部。但在最复杂的模板中,本质仍然是相同的。订单格式化不是魔法,只是浏览器中的普通表单,只是比反馈表单多几个字段。
从组件传递到模板的内容是什么?
组件形成订单对象和错误集合对象。$arResult数组不使用。
为了在模板的result_modifier.php文件中获得对订单对象和错误集合的访问权限,在文件开头插入以下代码
<?php /** * @var OpenSourceOrderComponent $component */ $component = &$this->__component; $order = $component->order; $errorCollection = $component->errorCollection;
在组件模板中,建议使用在 result_modifier 中预先形成的数组 $arResult(参见示例模板)。但如果出于某些原因您想直接访问订单对象,则可以这样操作
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) { die(); } /** @var OpenSourceOrderComponent $component */ echo $component->order->getPrice(); var_dump($component->errorCollection);
Ajax 请求应该发送到哪里?
组件中有三个现成的 Ajax 方法,它们都位于文件 ajax.php 中。所有这些方法都通过 "新的 Ajax 机制" 来实现。
- searchLocation. 根据任何类似 "москва","санкт" 等的字符串返回找到的位置。
- calculateDeliveries. 返回包含配送费用的数组。
- saveOrder. 使用 Ajax 保存数组。为了工作,需要序列化所有表单字段并发送。
如何针对项目修改组件?
首先,您可以发送 pull request。如果有对许多人有用的代码,那么 pull request 将被合并到主分支中。这样,您将使用原始组件,而无需任何修改。
其次,您可以利用 Bitrix 的事件系统。我认为最有用的是事件 OnSaleOrderBeforeSaved。
第三,您可以利用 组件继承功能。在继承的组件中编写任何需要的项目特定功能,同时不丢失与原始组件的兼容性。在任何情况下,您都将有自己的组件模板。
错误和建议应该发送到哪里?
组件已进行了一定程度的测试。但您可能仍会找到一些错误,在这种情况下,请在此存储库中创建 issue。改进建议也可以写入那里。