AdController.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php
  2. /**
  3. * Author: lf
  4. * Blog: https://blog.feehi.com
  5. * Email: job@feehi.com
  6. * Created at: 2017-12-05 12:47
  7. */
  8. namespace backend\controllers;
  9. use Yii;
  10. use backend\actions\ViewAction;
  11. use backend\actions\CreateAction;
  12. use backend\actions\UpdateAction;
  13. use backend\actions\IndexAction;
  14. use backend\actions\DeleteAction;
  15. use backend\actions\SortAction;
  16. use common\services\AdServiceInterface;
  17. /**
  18. * Advertisement management
  19. * - data:
  20. * table options with column `type` equal \common\models\Options::TYPE_AD
  21. * column `value` is a json format, like {"ad":"x.png"}
  22. *
  23. * Class AdController
  24. * @package backend\controllers
  25. */
  26. class AdController extends \yii\web\Controller
  27. {
  28. /**
  29. * @auth
  30. * - item group=运营管理 category=广告 description-get=列表 sort=620 method=get
  31. * - item group=运营管理 category=广告 description-get=查看 sort=621 method=get


  32. * - item group=运营管理 category=广告 description=创建 sort-get=622 sort-post=623 method=get,post


  33. * - item group=运营管理 category=广告 description=修改 sort-get=624 sort-post=625 method=get,post


  34. * - item group=运营管理 category=广告 description-post=删除 sort=626 method=post


  35. * - item group=运营管理 category=广告 description-post=排序 sort=627 method=post


  36. *
  37. * @return array
  38. * @throws \yii\base\InvalidConfigException
  39. */
  40. public function actions()
  41. {
  42. /** @var AdServiceInterface $service */
  43. $service = Yii::$app->get(AdServiceInterface::ServiceName);
  44. return [
  45. 'index' => [
  46. 'class' => IndexAction::className(),
  47. 'data' => function($query)use($service){
  48. /** @var array $query query params($_GET) */
  49. $result = $service->getList($query);
  50. return [
  51. 'dataProvider' => $result['dataProvider'],
  52. 'searchModel' => $result['searchModel'],
  53. ];
  54. }
  55. ],
  56. 'view-layer' => [
  57. 'class' => ViewAction::className(),
  58. 'data' => function($id)use($service){
  59. /** string|int $id primary key value,usually column `id` value */
  60. return [
  61. 'model' => $service->getDetail($id),
  62. ];
  63. },
  64. ],
  65. 'create' => [
  66. 'class' => CreateAction::className(),
  67. 'doCreate' => function($postData) use($service){
  68. /** @var $postData $_POST data */
  69. return $service->create($postData);
  70. },
  71. 'data' => function($createResultModel, CreateAction $createAction)use($service){
  72. /**
  73. * same path(`/path/create`) have two HTTP method
  74. * - GET for display create page
  75. * - POST execute a create operation(write data to database), then redirect to index or show a create error
  76. *
  77. * if $createResultModel equals null means that is a GET request, need to show create page,
  78. * otherwise means POST request, $createResultModel be the model of created(maybe contains data validation error)
  79. */
  80. $model = $createResultModel === null ? $service->newModel() : $createResultModel;
  81. return [
  82. 'model' => $model,
  83. ];
  84. }
  85. ],
  86. 'update' => [
  87. 'class' => UpdateAction::className(),
  88. 'doUpdate' => function($id, $postData, UpdateAction $updateAction) use($service){
  89. return $service->update($id, $postData);
  90. },
  91. 'data' => function($id, $updateResultModel) use($service){
  92. /**
  93. * same path(`/path/update`) have two HTTP method
  94. * - GET for display update page
  95. * - POST execute a update operation(write data to database), then redirect to index or show a update error
  96. *
  97. * if $updateResultModel equals null means that is a GET request, need to show update page,
  98. * otherwise means POST request, $updateResultModel be the model of updated(maybe contains data validation error)
  99. */
  100. $model = $updateResultModel === null ? $service->getDetail($id) : $updateResultModel;
  101. return [
  102. 'model' => $model,
  103. ];
  104. }
  105. ],
  106. 'delete' => [
  107. 'class' => DeleteAction::className(),
  108. 'doDelete' => function($id)use($service){
  109. /** string|int $id primary key value,usually column `id` value */
  110. return $service->delete($id);
  111. },
  112. ],
  113. 'sort' => [
  114. 'class' => SortAction::className(),
  115. 'doSort' => function($id, $sort)use($service){
  116. /** string|int $id primary key value,usually column `id` value */
  117. /** int $sort sort value */
  118. return $service->sort($id, $sort);
  119. },
  120. ],
  121. ];
  122. }
  123. }