You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
4.2 KiB
157 lines
4.2 KiB
<?php |
|
|
|
use yii\db\ActiveRecordInterface; |
|
use yii\helpers\StringHelper; |
|
|
|
/** |
|
* This is the template for generating a CRUD controller class file. |
|
* |
|
* @var yii\web\View $this |
|
* @var yii\gii\generators\crud\Generator $generator |
|
*/ |
|
|
|
$controllerClass = StringHelper::basename($generator->controllerClass); |
|
$modelClass = StringHelper::basename($generator->modelClass); |
|
$searchModelClass = StringHelper::basename($generator->searchModelClass); |
|
if ($modelClass === $searchModelClass) { |
|
$searchModelAlias = $searchModelClass.'Search'; |
|
} |
|
|
|
/** @var ActiveRecordInterface $class */ |
|
$class = $generator->modelClass; |
|
$pks = $class::primaryKey(); |
|
$urlParams = $generator->generateUrlParams(); |
|
$actionParams = $generator->generateActionParams(); |
|
$actionParamComments = $generator->generateActionParamComments(); |
|
|
|
echo "<?php\n"; |
|
?> |
|
|
|
namespace <?= StringHelper::dirname(ltrim($generator->controllerClass, '\\')) ?>; |
|
|
|
use <?= ltrim($generator->modelClass, '\\') ?>; |
|
use <?= ltrim($generator->searchModelClass, '\\') ?><?php if (isset($searchModelAlias)):?> as <?= $searchModelAlias ?><?php endif ?>; |
|
use <?= ltrim($generator->baseControllerClass, '\\') ?>; |
|
use yii\web\NotFoundHttpException; |
|
use yii\web\VerbFilter; |
|
|
|
/** |
|
* <?= $controllerClass ?> implements the CRUD actions for <?= $modelClass ?> model. |
|
*/ |
|
class <?= $controllerClass ?> extends <?= StringHelper::basename($generator->baseControllerClass) . "\n" ?> |
|
{ |
|
public function behaviors() |
|
{ |
|
return [ |
|
'verbs' => [ |
|
'class' => VerbFilter::className(), |
|
'actions' => [ |
|
'delete' => ['post'], |
|
], |
|
], |
|
]; |
|
} |
|
|
|
/** |
|
* Lists all <?= $modelClass ?> models. |
|
* @return mixed |
|
*/ |
|
public function actionIndex() |
|
{ |
|
$searchModel = new <?= isset($searchModelAlias) ? $searchModelAlias : $searchModelClass ?>; |
|
$dataProvider = $searchModel->search($_GET); |
|
|
|
return $this->render('index', [ |
|
'dataProvider' => $dataProvider, |
|
'searchModel' => $searchModel, |
|
]); |
|
} |
|
|
|
/** |
|
* Displays a single <?= $modelClass ?> model. |
|
* <?= implode("\n\t * ", $actionParamComments) . "\n" ?> |
|
* @return mixed |
|
*/ |
|
public function actionView(<?= $actionParams ?>) |
|
{ |
|
return $this->render('view', [ |
|
'model' => $this->findModel(<?= $actionParams ?>), |
|
]); |
|
} |
|
|
|
/** |
|
* Creates a new <?= $modelClass ?> model. |
|
* If creation is successful, the browser will be redirected to the 'view' page. |
|
* @return mixed |
|
*/ |
|
public function actionCreate() |
|
{ |
|
$model = new <?= $modelClass ?>; |
|
|
|
if ($model->load($_POST) && $model->save()) { |
|
return $this->redirect(['view', <?= $urlParams ?>]); |
|
} else { |
|
return $this->render('create', [ |
|
'model' => $model, |
|
]); |
|
} |
|
} |
|
|
|
/** |
|
* Updates an existing <?= $modelClass ?> model. |
|
* If update is successful, the browser will be redirected to the 'view' page. |
|
* <?= implode("\n\t * ", $actionParamComments) . "\n" ?> |
|
* @return mixed |
|
*/ |
|
public function actionUpdate(<?= $actionParams ?>) |
|
{ |
|
$model = $this->findModel(<?= $actionParams ?>); |
|
|
|
if ($model->load($_POST) && $model->save()) { |
|
return $this->redirect(['view', <?= $urlParams ?>]); |
|
} else { |
|
return $this->render('update', [ |
|
'model' => $model, |
|
]); |
|
} |
|
} |
|
|
|
/** |
|
* Deletes an existing <?= $modelClass ?> model. |
|
* If deletion is successful, the browser will be redirected to the 'index' page. |
|
* <?= implode("\n\t * ", $actionParamComments) . "\n" ?> |
|
* @return mixed |
|
*/ |
|
public function actionDelete(<?= $actionParams ?>) |
|
{ |
|
$this->findModel(<?= $actionParams ?>)->delete(); |
|
return $this->redirect(['index']); |
|
} |
|
|
|
/** |
|
* Finds the <?= $modelClass ?> model based on its primary key value. |
|
* If the model is not found, a 404 HTTP exception will be thrown. |
|
* <?= implode("\n\t * ", $actionParamComments) . "\n" ?> |
|
* @return <?= $modelClass ?> the loaded model |
|
* @throws NotFoundHttpException if the model cannot be found |
|
*/ |
|
protected function findModel(<?= $actionParams ?>) |
|
{ |
|
<?php |
|
if (count($pks) === 1) { |
|
$condition = '$id'; |
|
} else { |
|
$condition = []; |
|
foreach ($pks as $pk) { |
|
$condition[] = "'$pk' => \$$pk"; |
|
} |
|
$condition = '[' . implode(', ', $condition) . ']'; |
|
} |
|
?> |
|
if (($model = <?= $modelClass ?>::find(<?= $condition ?>)) !== null) { |
|
return $model; |
|
} else { |
|
throw new NotFoundHttpException('The requested page does not exist.'); |
|
} |
|
} |
|
}
|
|
|