PageController.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. /**
  3. * Author: lf
  4. * Blog: https://blog.feehi.com
  5. * Email: job@feehi.com
  6. * Created at: 2016-03-23 15:13
  7. */
  8. namespace backend\controllers;
  9. use Yii;
  10. use common\services\ArticleServiceInterface;
  11. use common\models\Article;
  12. use backend\actions\CreateAction;
  13. use backend\actions\UpdateAction;
  14. use backend\actions\IndexAction;
  15. use backend\actions\ViewAction;
  16. use backend\actions\DeleteAction;
  17. use backend\actions\SortAction;
  18. /**
  19. * Page management
  20. * - data:
  21. * table article article_content
  22. * - description:
  23. * frontend single management. please find single page by column `sub_title`
  24. *
  25. * Class PageController
  26. * @package backend\controllers
  27. */
  28. class PageController extends \yii\web\Controller
  29. {
  30. /**
  31. * @auth
  32. * - item group=内容 category=单页 description-get=列表 sort=330 method=get
  33. * - item group=内容 category=单页 description-get=查看 sort=331 method=get


  34. * - item group=内容 category=单页 description=创建 sort-get=332 sort-post=333 method=get,post


  35. * - item group=内容 category=单页 description=修改 sort-get=334 sort-post=335 method=get,post


  36. * - item group=内容 category=单页 description-post=删除 sort=336 method=post


  37. * - item group=内容 category=单页 description-post=排序 sort=337 method=post
  38. * @return array
  39. * @throws \yii\base\InvalidConfigException
  40. */
  41. public function actions()
  42. {
  43. /** @var ArticleServiceInterface $service */
  44. $service = Yii::$app->get(ArticleServiceInterface::ServiceName);
  45. return [
  46. 'index' => [
  47. 'class' => IndexAction::className(),
  48. 'data' => function($query) use($service){
  49. $result = $service->getList($query, ['type'=> Article::SINGLE_PAGE]);
  50. return [
  51. 'dataProvider' => $result['dataProvider'],
  52. 'searchModel' => $result['searchModel'],
  53. 'frontendURLManager' => $service->getFrontendURLManager(),
  54. ];
  55. }
  56. ],
  57. 'view-layer' => [
  58. 'class' => ViewAction::className(),
  59. 'data' => function($id) use($service){
  60. return [
  61. 'model' => $service->getDetail($id, ['scenario'=>ArticleServiceInterface::ScenarioPage]),
  62. ];
  63. },
  64. ],
  65. 'create' => [
  66. 'class' => CreateAction::className(),
  67. 'doCreate' => function($postData) use($service){
  68. return $service->create($postData, ['scenario'=>ArticleServiceInterface::ScenarioPage]);
  69. },
  70. 'data' => function($createResultModel) use($service){
  71. return [
  72. 'model' => $createResultModel === null ? $service->newModel(['scenario'=>ArticleServiceInterface::ScenarioPage]) : $createResultModel['articleModel'],
  73. 'contentModel' => $createResultModel === null ? $service->newArticleContentModel() : $createResultModel['articleContentModel'] ,
  74. ];
  75. },
  76. ],
  77. 'update' => [
  78. 'class' => UpdateAction::className(),
  79. 'doUpdate' => function($id, $postData) use($service){
  80. return $service->update($id, $postData, ['scenario'=>ArticleServiceInterface::ScenarioPage]);
  81. },
  82. 'data' => function($id, $updateResultModel) use($service){
  83. return [
  84. 'model' => $updateResultModel === null ? $service->getDetail($id, ['scenario'=>ArticleServiceInterface::ScenarioPage]) : $updateResultModel['articleModel'],
  85. 'contentModel' => $updateResultModel === null ? $service->getArticleContentDetail($id) : $updateResultModel['articleContentModel'],
  86. ];
  87. }
  88. ],
  89. 'delete' => [
  90. 'class' => DeleteAction::className(),
  91. 'doDelete' => function($id) use($service){
  92. return $service->delete($id);
  93. },
  94. ],
  95. 'sort' => [
  96. 'class' => SortAction::className(),
  97. 'doSort' => function($id, $sort) use($service){
  98. return $service->sort($id, $sort, ['scenario'=>ArticleServiceInterface::ScenarioPage]);
  99. }
  100. ],
  101. ];
  102. }
  103. }