该软件包已被 废弃 并不再维护。没有建议的替代软件包。

轻松创建ajax响应

安装数: 4,479

依赖者: 0

建议者: 0

安全: 0

星标: 5

关注者: 3

分支: 3

公开问题: 0

类型:bitrix-d7-module

1.2 2019-04-08 14:23 UTC

This package is auto-updated.

Last update: 2022-10-11 23:20:35 UTC


README

Bitrix CMS中编写API的简单界面。

将所有处理程序放置在/api/空间,使开发者能够编写统一的处理程序。

为那些厌倦了编写组件处理程序、在doc_root中产生大量文件(如/ajax文件夹)以及尚未实施laravel/symphony路由器的人提供的解决方案。

⚠️ 已弃用

建议使用

  • Bitrix原生控制器
  • Laravel/Symphony控制器

本模块适用于旧项目或向后兼容。

在Bitrix CMS中安装

  1. composer require webpractik/api
  2. 在管理员面板中安装模块

安装过程

在安装过程中

  • 在DocRoot根目录添加api-router.php
  • urlrewrite.php中安装/api/路由
  • local/components/webpractik/api/中安装组件

编写处理程序

  1. 在本地webpractik:api组件中注册$arUrlTemplates路由
class ApiRouterExtended extends \Webpractik\Api\ApiRouter
{
	public $sefVariables   = [];
	public $arUrlTemplates = [
		'\MySite\Lk\Response\Resubmit' => 'application/resubmit/',
	];
	public $arLoadModules  = [
		'webpractik.main'
	];
}

在模块中传递需要自动加载的模块(@todo fixme)

  1. 添加处理程序 \MySite\Lk\Response\Resubmit,它继承自 \Webpractik\Api\Response
方法 描述
public function handler(){} 主要逻辑
public function validate() 验证逻辑。当
public $method GET/POST - 期望的请求类型
public $request \Bitrix\Main\HttpRequest https://dev.1c-bitrix.ru/api_d7/bitrix/main/request/index.php
public $response \Webpractik\Api\JsonResponse

JSON示例

{
  "status": true,
  "errors": []
}

JsonResponse接口

方法 描述
addError($strError) 添加错误
addParam($name, $value) 向JSON添加参数
setSuccess/setFail 设置状态为true/false
send json_encode + die()
sendSuccess setSuccess + send()
sendFail($strError) addError($strError) + send()
haveErrors() true
getErrors() 数组
getResponse() 数组

示例

class FormRegister extends \Webpractik\Api\Response
{
	public function handler() {
		if (!$this->register()) {
		    $this->response->sendFail('Ошибка регистрации')
		}
		$this->response
		    ->addParam('password', $this->password)
		    ->setSuccess()
		    ->send();
	}

	public function validate() {
		if (!$this->request->getPost('email')) {
		    $this->response->addError('Не введен email');
		}
		if (!$this->request->getPost('login')) {
		    $this->response->addError('Не введен логин');
		}

		return $this->response->haveErrors();
	}
}

这是一个抽象示例,仅为了展示功能。