alorian/bxorder

开源的bitrix订单组件

安装: 382

依赖: 0

建议者: 0

安全: 0

星标: 81

关注者: 8

分支: 29

语言:JavaScript

类型:bitrix模块

v1.0.3 2020-03-10 21:56 UTC

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 机制" 来实现。

  1. searchLocation. 根据任何类似 "москва","санкт" 等的字符串返回找到的位置。
  2. calculateDeliveries. 返回包含配送费用的数组。
  3. saveOrder. 使用 Ajax 保存数组。为了工作,需要序列化所有表单字段并发送。

如何针对项目修改组件?

首先,您可以发送 pull request。如果有对许多人有用的代码,那么 pull request 将被合并到主分支中。这样,您将使用原始组件,而无需任何修改。

其次,您可以利用 Bitrix 的事件系统。我认为最有用的是事件 OnSaleOrderBeforeSaved

第三,您可以利用 组件继承功能。在继承的组件中编写任何需要的项目特定功能,同时不丢失与原始组件的兼容性。在任何情况下,您都将有自己的组件模板。

错误和建议应该发送到哪里?

组件已进行了一定程度的测试。但您可能仍会找到一些错误,在这种情况下,请在此存储库中创建 issue。改进建议也可以写入那里。