threedgroup / craft-rest-api
为craft添加REST功能
dev-master
2019-01-14 15:07 UTC
Requires
- craftcms/cms: ^3.0.0-RC1
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或更高版本。
安装
要安装此插件,请按照以下说明操作。
-
打开您的终端并转到您的Craft项目
cd /path/to/project
-
然后让Composer加载插件
composer require threedgroup/craft-rest-api
-
在控制面板中,转到设置 → 插件,并为Craft REST API点击“安装”按钮。
Craft REST API概览
为craft CMS提供无头条目
配置Craft REST API
-
通过创建一个名为api的新Web目录为craft创建一个新的端点。(在路由中创建一个名为api的新文件夹,它将位于web文件夹旁边)。然后,将web文件夹中的所有内容复制到api文件夹中(cpresources不需要)。
-
在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'));
- 在您的项目配置文件夹中创建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提供