-
Notifications
You must be signed in to change notification settings - Fork 176
Expand file tree
/
Copy pathArticleController.php
More file actions
116 lines (110 loc) · 5.05 KB
/
Copy pathArticleController.php
File metadata and controls
116 lines (110 loc) · 5.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
/**
* Author: lf
* Blog: https://blog.feehi.com
* Email: job@feehi.com
* Created at: 2016-03-23 15:13
*/
namespace backend\controllers;
use Yii;
use common\services\CategoryServiceInterface;
use common\models\Article;
use common\services\ArticleServiceInterface;
use backend\actions\CreateAction;
use backend\actions\UpdateAction;
use backend\actions\IndexAction;
use backend\actions\ViewAction;
use backend\actions\DeleteAction;
use backend\actions\SortAction;
use yii\helpers\ArrayHelper;
/**
* Article management
* - data:
* table article article_content
* - description:
* article management
*
* Class ArticleController
* @package backend\controllers
*/
class ArticleController extends \yii\web\Controller
{
/**
* @auth
* - item group=内容 category=文章 description-get=列表 sort=300 method=get
* - item group=内容 category=文章 description-get=查看 sort=301 method=get
* - item group=内容 category=文章 description=创建 sort-get=302 sort-post=303 method=get,post
* - item group=内容 category=文章 description=修改 sort=304 sort-post=305 method=get,post
* - item group=内容 category=文章 description-post=删除 sort=306 method=post
* - item group=内容 category=文章 description-post=排序 sort=307 method=post
* @return array
* @throws \yii\base\InvalidConfigException
*/
public function actions()
{
/** @var ArticleServiceInterface $service */
$service = Yii::$app->get(ArticleServiceInterface::ServiceName);
/** @var CategoryServiceInterface $categoryService */
$categoryService = Yii::$app->get(CategoryServiceInterface::ServiceName);
return [
'index' => [
'class' => IndexAction::className(),
'data' => function($query) use($service, $categoryService){
$result = $service->getList($query, ['type'=>Article::ARTICLE]);
return [
'dataProvider' => $result['dataProvider'],
'searchModel' => $result['searchModel'],
'categories' => ArrayHelper::getColumn($categoryService->getLevelCategoriesWithPrefixLevelCharacters(), "prefix_level_name"),
'frontendURLManager' => $service->getFrontendURLManager()
];
}
],
'view-layer' => [
'class' => ViewAction::className(),
'data' => function($id) use($service){
return [
'model' => $service->getDetail($id),
];
},
],
'create' => [
'class' => CreateAction::className(),
'doCreate' => function($postData) use($service){
return $service->create($postData, ['scenario'=>ArticleServiceInterface::ScenarioArticle]);
},
'data' => function($createResultModel, CreateAction $createAction) use($service, $categoryService){
return [
'model' => $createResultModel === null ? $service->newModel(['scenario'=>ArticleServiceInterface::ScenarioArticle]) : $createResultModel['articleModel'],
'contentModel' => $createResultModel === null ? $service->newArticleContentModel() : $createResultModel['articleContentModel'] ,
'categories' => ArrayHelper::getColumn($categoryService->getLevelCategoriesWithPrefixLevelCharacters(), "prefix_level_name"),
];
},
],
'update' => [
'class' => UpdateAction::className(),
'doUpdate' => function($id, $postData) use($service){
return $service->update($id, $postData, ['scenario'=>ArticleServiceInterface::ScenarioArticle]);
},
'data' => function($id, $updateResultModel) use($service, $categoryService){
return [
'model' => $updateResultModel === null ? $service->getDetail($id, ['scenario'=>ArticleServiceInterface::ScenarioArticle]) : $updateResultModel['articleModel'],
'contentModel' => $updateResultModel === null ? $service->getArticleContentDetail($id) : $updateResultModel['articleContentModel'],
'categories' => ArrayHelper::getColumn($categoryService->getLevelCategoriesWithPrefixLevelCharacters(), "prefix_level_name"),
];
}
],
'delete' => [
'class' => DeleteAction::className(),
'doDelete' => function($id) use($service){
return $service->delete($id);
},
],
'sort' => [
'class' => SortAction::className(),
'doSort' => function($id, $sort) use($service){
return $service->sort($id, $sort, ['scenario'=>ArticleServiceInterface::ScenarioArticle]);
}
],
];
}
}