controller.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <?php
  2. /**
  3. * This is the FeehiCMS backend template for generating a CRUD controller class file.
  4. */
  5. use yii\db\ActiveRecordInterface;
  6. use yii\helpers\Inflector;
  7. use yii\helpers\StringHelper;
  8. /* @var $this yii\web\View */
  9. /* @var $generator yii\gii\generators\crud\Generator */
  10. $controllerClass = StringHelper::basename($generator->controllerClass);
  11. $modelClass = StringHelper::basename($generator->modelClass);
  12. $searchModelClass = StringHelper::basename($generator->searchModelClass);
  13. if ($modelClass === $searchModelClass) {
  14. $searchModelAlias = $searchModelClass . 'Search';
  15. }
  16. /* @var $class ActiveRecordInterface */
  17. $class = $generator->modelClass;
  18. $pks = $class::primaryKey();
  19. $urlParams = $generator->generateUrlParams();
  20. $actionParams = $generator->generateActionParams();
  21. $actionParamComments = $generator->generateActionParamComments();
  22. echo "<?php\n";
  23. ?>
  24. namespace <?= StringHelper::dirname(ltrim($generator->controllerClass, '\\')) ?>;
  25. use Yii;
  26. use common\services\<?= $modelClass ?>ServiceInterface;
  27. use common\services\<?= $modelClass ?>Service;
  28. use backend\actions\CreateAction;
  29. use backend\actions\UpdateAction;
  30. use backend\actions\IndexAction;
  31. use backend\actions\DeleteAction;
  32. use backend\actions\SortAction;
  33. use backend\actions\ViewAction;
  34. <?php if (empty($generator->searchModelClass)){ ?>
  35. use yii\data\ActiveDataProvider;
  36. <?php } ?>
  37. <?php $category = Yii::t("app", Inflector::pluralize(Inflector::camel2words(StringHelper::basename($generator->modelClass)))); ?>
  38. <?php
  39. $idSign = "";
  40. $closureIdParam = "";
  41. if( !empty($pks) ) {
  42. $idSign = " 'primaryKeyIdentity' => ";
  43. if (count($pks) === 1) {
  44. if ($pks[0] !== "id") {
  45. $idSign .= "'" . $pks[0] . "',\n";
  46. $closureIdParam = '$' . $pks[0];
  47. }else{
  48. $idSign = "";
  49. $closureIdParam = '$id';
  50. }
  51. } else {
  52. $idSign .= "[";
  53. $i = 0;
  54. foreach ($pks as $key) {
  55. $idSign .= "'" . $key . "',";
  56. if($i > 0){
  57. $closureIdParam .= ' $' . $key . ",";
  58. }else{
  59. $closureIdParam .= '$' . $key . ",";
  60. }
  61. $i++;
  62. }
  63. $idSign = rtrim($idSign, ",");
  64. $idSign .= "],\n";
  65. $closureIdParam = rtrim($closureIdParam, ",");
  66. }
  67. }
  68. ?>
  69. /**
  70. * <?= $controllerClass ?> implements the CRUD actions for <?= $modelClass ?> model.
  71. */
  72. class <?= $controllerClass ?> extends \yii\web\<?= StringHelper::basename($generator->baseControllerClass) . "\n" ?>
  73. {
  74. /**
  75. * @auth
  76. * - item group=未分类 category=<?= $category?> description-get=列表 sort=000 method=get
  77. * - item group=未分类 category=<?= $category?> description=创建 sort-get=001 sort-post=002 method=get,post


  78. * - item group=未分类 category=<?= $category?> description=修改 sort=003 sort-post=004 method=get,post


  79. * - item group=未分类 category=<?= $category?> description-post=删除 sort=005 method=post


  80. * - item group=未分类 category=<?= $category?> description-post=排序 sort=006 method=post


  81. * - item group=未分类 category=<?= $category?> description-get=查看 sort=007 method=get


  82. * @return array
  83. */
  84. public function actions()
  85. {
  86. /** @var <?=$modelClass?>ServiceInterface $service */
  87. $service = Yii::$app->get(<?=$modelClass?>ServiceInterface::ServiceName);
  88. return [
  89. 'index' => [
  90. 'class' => IndexAction::className(),
  91. 'data' => function($query, $indexAction) use($service){
  92. $result = $service->getList($query);
  93. return [
  94. 'dataProvider' => $result['dataProvider'],
  95. <?php if( !empty($generator->searchModelClass) ) { ?>'searchModel' => $result['searchModel'],<?php } ?>
  96. ];
  97. }
  98. ],
  99. 'create' => [
  100. 'class' => CreateAction::className(),
  101. 'doCreate' => function($postData, $createAction) use($service){
  102. return $service->create($postData);
  103. },
  104. 'data' => function($createResultModel, $createAction) use($service){
  105. $model = $createResultModel === null ? $service->newModel() : $createResultModel;
  106. return [
  107. 'model' => $model,
  108. ];
  109. }
  110. ],
  111. 'update' => [
  112. 'class' => UpdateAction::className(),
  113. <?php if(!empty($idSign)){echo $idSign;} ?>
  114. 'doUpdate' => function(<?php if(!empty($closureIdParam)){echo $closureIdParam;echo ", ";}?>$postData, $updateAction) use($service){
  115. return $service->update(<?=$closureIdParam?>, $postData);
  116. },
  117. 'data' => function(<?php if(!empty($closureIdParam)){echo $closureIdParam;echo ", ";}?>$updateResultModel, $updateAction) use($service){
  118. $model = $updateResultModel === null ? $service->getDetail(<?=$closureIdParam?>) : $updateResultModel;
  119. return [
  120. 'model' => $model,
  121. ];
  122. }
  123. ],
  124. 'delete' => [
  125. 'class' => DeleteAction::className(),
  126. <?php if(!empty($idSign)){echo $idSign;} ?>
  127. 'doDelete' => function(<?php if(!empty($closureIdParam)){echo $closureIdParam;echo ", ";}?>$deleteAction) use($service){
  128. return $service->delete(<?=$closureIdParam?>);
  129. },
  130. ],
  131. 'sort' => [
  132. 'class' => SortAction::className(),
  133. 'doSort' => function($id, $sort, $sortAction) use($service){
  134. return $service->sort($id, $sort);
  135. },
  136. ],
  137. 'view-layer' => [
  138. 'class' => ViewAction::className(),
  139. <?php if(!empty($idSign)){echo $idSign;} ?>
  140. 'data' => function(<?php if(!empty($closureIdParam)){echo $closureIdParam;echo ", ";}?>$viewAction) use($service){
  141. return [
  142. 'model' => $service->getDetail(<?=$closureIdParam?>),
  143. ];
  144. },
  145. ],
  146. ];
  147. }
  148. }