threedgroup / craft-rest-api

为craft添加REST功能

安装: 9

依赖: 0

建议: 0

安全性: 0

星星: 0

关注者: 3

分支: 0

类型:craft插件

dev-master 2019-01-14 15:07 UTC

This package is auto-updated.

Last update: 2024-09-15 04:05:37 UTC


README

  • 添加Craft REST API
  • 与标准条目协同工作
  • 配置文件提供获取自定义元素的能力
  • 可以在prepareDataProvider选项中添加自定义搜索
  • 移除一些不必要且特定的Craft端点(cp)如下
  • 使用Yii2 REST功能。

要求

此插件需要Craft CMS 3.0.0-beta.23或更高版本。

安装

要安装此插件,请按照以下说明操作。

  1. 打开您的终端并转到您的Craft项目

     cd /path/to/project
    
  2. 然后让Composer加载插件

     composer require threedgroup/craft-rest-api
    
  3. 在控制面板中,转到设置 → 插件,并为Craft REST API点击“安装”按钮。

Craft REST API概览

为craft CMS提供无头条目

配置Craft REST API

  1. 通过创建一个名为api的新Web目录为craft创建一个新的端点。(在路由中创建一个名为api的新文件夹,它将位于web文件夹旁边)。然后,将web文件夹中的所有内容复制到api文件夹中(cpresources不需要)。

  2. 在index.php文件中,在现有常量下添加以下行

define('REST', true);

然后,您的app.php配置文件应如下所示

$config = [
    /** all exisintg config  EG: */
    'modules' => [
        'my-module' => \modules\Module::class,
    ]
];

if(!defined('REST')) {
    return $config;
}

return \craft\helpers\ArrayHelper::merge($config,
    require(CRAFT_VENDOR_PATH . '/threedgroup/craft-rest-api/src/config/rest.php'));
  1. 在您的项目配置文件夹中创建craft-rest-api.php设置文件
return [
    'sections' => [
        'testEntry' => [
            'fields' => [
                'id'
            ],
            'extraFields' => [
                'test'
            ],
            'prepareDataProvider' => function($model) {
                /** @var $query \craft\elements\Entry */
                $query = $model::find();

                return new \yii\data\ActiveDataProvider([
                    'query' => $query,
                ]);
            }
        ]
    ],
    'customElements' => [
        'question' => [
            'class' => \threedgroup\geekeyaftercare\elements\Question::class,
            /* fields removed the fields option is not used */
            'removeFields' => [
                '_statusData'
            ],
            /* Fields that will be displayed on the query */
            'fields' => [
                'id',
                'comment'=>function($model){
                    return (string) $model->comment;
                },
                'sku' => function($model){
                    $data=[];
                    foreach($model->skunew AS $variant){
                        $data[$variant->id] = $variant->sku;
                    }
                    return $data;
                }
            ],
            /* Required for saving data without these the custom fields will not be sent on the element */
            'customElementFields' => [
                'questionStatus' => 'questionStatus'
            ],
            /* Expandable fields for relations */
            'extraFields' => [
                'products'=> 'skunew'
            ],
            /* Ability to change the data provider of the query */
            'prepareDataProvider' => function($model) {
                /** @var $query Question */
                $query = $model::find();

                $productVariant = isset(\Yii::$app->request->queryParams['productVariant']) ? \Yii::$app->request->queryParams['productVariant'] : null;
                $searchString = isset(\Yii::$app->request->queryParams['search']) ? \Yii::$app->request->queryParams['search'] : null;

                if($productVariant) {
                    $query->productVariant($productVariant);
                }

                if($searchString) {
                    $query->search($searchString);
                }

                $query->with('SKUnew');

                return new \yii\data\ActiveDataProvider([
                    'query' => $query,
                ]);
            }
        ]
    ]
];

使用Craft REST API

使用REST应用程序测试您的数据。

Craft REST API路线图

一些待办事项和潜在功能的想法

  • 添加令牌模型,以便系统可以通过令牌在REST请求中登录。

3D Group提供