Skip to content

Commit

Permalink
updated controller
Browse files Browse the repository at this point in the history
  • Loading branch information
eluhr committed Dec 14, 2021
1 parent c3d7fd8 commit 667f8e2
Showing 1 changed file with 141 additions and 149 deletions.
290 changes: 141 additions & 149 deletions src/generators/crud/default/controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@

use yii\helpers\StringHelper;

/*
/**
* This is the template for generating a CRUD controller class file.
*
* @var yii\web\View $this
* @var schmunk42\giiant\generators\crud\Generator $generator
* @var array $accessDefinitions
*/

$controllerClass = StringHelper::basename($generator->controllerClass);
Expand Down Expand Up @@ -37,20 +38,23 @@

use <?= ltrim($generator->modelClass, '\\') ?>;
<?php if ($searchModelClass !== ''): ?>
use <?= ltrim(
use <?= ltrim(
$generator->searchModelClass,
'\\'
) ?><?php if (isset($searchModelAlias)): ?> as <?= $searchModelAlias ?><?php endif ?>;
<?php endif; ?>
use <?= ltrim($generator->baseControllerClass, '\\') ?>;
use yii\web\HttpException;
use yii\helpers\Url;
<?php if($generator->accessFilter): ?>
use yii\filters\AccessControl;
<?php endif; ?>
use dmstr\bootstrap\Tabs;
use Yii;
use yii\web\NotFoundHttpException;

/**
* <?= $controllerClass ?> implements the CRUD actions for <?= $modelClass ?> model.
*/
* <?= $controllerClass ?> implements the CRUD actions for <?= $modelClass ?> model.
*/
class <?= $controllerClass ?> extends <?= StringHelper::basename($generator->baseControllerClass)."\n" ?>
{

Expand All @@ -61,11 +65,11 @@ class <?= $controllerClass ?> extends <?= StringHelper::basename($generator->bas
}
?>

/**
* @var boolean whether to enable CSRF validation for the actions in this controller.
* CSRF validation is enabled only when both this property and [[Request::enableCsrfValidation]] are true.
*/
public $enableCsrfValidation = false;
/**
* @var boolean whether to enable CSRF validation for the actions in this controller.
* CSRF validation is enabled only when both this property and [[Request::enableCsrfValidation]] are true.
*/
public $enableCsrfValidation = false;

<?php if ($generator->accessFilter): ?>
/**
Expand Down Expand Up @@ -94,151 +98,139 @@ public function behaviors()
}
<?php endif; ?>

/**
* Lists all <?= $modelClass ?> models.
* @return mixed
*/
public function actionIndex()
{
<?php if ($searchModelClass !== '') {
?>
$searchModel = new <?= $searchModelClassName ?>;
$dataProvider = $searchModel->search($_GET);
<?php
} else {
?>
$dataProvider = new \yii\data\ActiveDataProvider([
'query' => <?= $modelClass ?>::find(),
]);
<?php
} ?>

Tabs::clearLocalStorage();

Url::remember();
\Yii::$app->session['__crudReturnUrl'] = null;

return $this->render('index', [
'dataProvider' => $dataProvider,
<?php if ($searchModelClass !== ''): ?>
/**
* Lists all <?= $modelClass ?> models.
*
* @return string
*/
public function actionIndex()
{
<?php if ($searchModelClass !== '') {
?>
$searchModel = new <?= $searchModelClassName ?>();
$dataProvider = $searchModel->search($_GET);
<?php
} else {
?>
$dataProvider = new \yii\data\ActiveDataProvider([
'query' => <?= $modelClass ?>::find(),
]);
<?php
} ?>

Tabs::clearLocalStorage();

Url::remember();
Yii::$app->session->set('__crudReturnUrl', null);

return $this->render('index', [
'dataProvider' => $dataProvider,
<?php if ($searchModelClass !== ''): ?>
'searchModel' => $searchModel,
<?php endif; ?>
<?php endif; ?>
]);
}

/**
* Displays a single <?= $modelClass ?> model.
* <?= implode("\n\t * ", $actionParamComments)."\n" ?>
*
* @return mixed
*/
public function actionView(<?= $actionParams ?>)
{
\Yii::$app->session['__crudReturnUrl'] = Url::previous();
Url::remember();
Tabs::rememberActiveState();

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 ?>;

try {
if ($model->load($_POST) && $model->save()) {
return $this->redirect(['view', <?= $urlParams ?>]);
} elseif (!\Yii::$app->request->isPost) {
$model->load($_GET);
}
} catch (\Exception $e) {
$msg = (isset($e->errorInfo[2]))?$e->errorInfo[2]:$e->getMessage();
$model->addError('_exception', $msg);
}
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(Url::previous());
} else {
return $this->render('update', [
'model' => $model,
]);
}
}
/**
* Displays a single <?= $modelClass ?> model.
*
* <?= implode("\n\t * ", $actionParamComments)."\n" ?>
*
* @return string
* @throws \yii\web\HttpException
*/
public function actionView(<?= $actionParams ?>)
{
Yii::$app->session->set('__crudReturnUrl', Url::previous());
Url::remember();
Tabs::rememberActiveState();
return $this->render('view', ['model' => $this->findModel(<?= $actionParams ?>)]);
}

/**
* 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 ?>)
{
try {
$this->findModel(<?= $actionParams ?>)->delete();
} catch (\Exception $e) {
$msg = (isset($e->errorInfo[2]))?$e->errorInfo[2]:$e->getMessage();
\Yii::$app->getSession()->addFlash('error', $msg);
return $this->redirect(Url::previous());
}
/**
* Creates a new <?= $modelClass ?> model.
* If creation is successful, the browser will be redirected to the 'view' page.
*
* @return string|\yii\web\Response
*/
public function actionCreate()
{
$model = new <?= $modelClass ?>();
try {
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', <?= $urlParams ?>]);
}
if (!Yii::$app->request->isPost) {
$model->load(Yii::$app->request->get());
}
} catch (\Exception $e) {
$model->addError('_exception', $e->errorInfo[2] ?? $e->getMessage());
}
return $this->render('create', ['model' => $model]);
}

// TODO: improve detection
$isPivot = strstr('<?= $actionParams ?>',',');
if ($isPivot == true) {
return $this->redirect(Url::previous());
} elseif (isset(\Yii::$app->session['__crudReturnUrl']) && \Yii::$app->session['__crudReturnUrl'] != '/') {
Url::remember(null);
$url = \Yii::$app->session['__crudReturnUrl'];
\Yii::$app->session['__crudReturnUrl'] = null;
/**
* Updates an existing <?= $modelClass ?> model.
* If update is successful, the browser will be redirected to the 'view' page.
*
* <?= implode("\n\t * ", $actionParamComments)."\n" ?>
* @return string|\yii\web\Response
* @throws \yii\web\HttpException
*/
public function actionUpdate(<?= $actionParams ?>)
{
$model = $this->findModel(<?= $actionParams ?>);
if ($model->load($_POST) && $model->save()) {
return $this->redirect(Url::previous());
}
return $this->render('update', ['model' => $model]);
}

return $this->redirect($url);
} else {
return $this->redirect(['index']);
}
}
/**
* Deletes an existing <?= $modelClass ?> model.
* If deletion is successful, the browser will be redirected to the 'index' page.
*
* <?= implode("\n\t * ", $actionParamComments)."\n" ?>
* @return \yii\web\Response
* @throws \Throwable
*/
public function actionDelete(<?= $actionParams ?>)
{
try {
$this->findModel(<?= $actionParams ?>)->delete();
} catch (\Exception $e) {
Yii::$app->getSession()->addFlash('error', $e->errorInfo[2] ?? $e->getMessage());
return $this->redirect(Url::previous());
}

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 HttpException if the model cannot be found
*/
protected function findModel(<?= $actionParams ?>)
{
<?php
if (count($pks) === 1) {
$condition = '$'.$pks[0];
} else {
$condition = [];
foreach ($pks as $pk) {
$condition[] = "'$pk' => \$$pk";
/**
* 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 = '$'.$pks[0];
} else {
$condition = [];
foreach ($pks as $pk) {
$condition[] = "'$pk' => \$$pk";
}
$condition = '['.implode(', ', $condition).']';
}
?>
$model = <?= $modelClass ?>::findOne(<?= $condition ?>);
if ($model !== null) {
return $model;
}
throw new NotFoundHttpException(<?= $generator->generateString('The requested page does not exist.')?>);
}
$condition = '['.implode(', ', $condition).']';
}
?>
if (($model = <?= $modelClass ?>::findOne(<?= $condition ?>)) !== null) {
return $model;
} else {
throw new HttpException(404, 'The requested page does not exist.');
}
}
}

0 comments on commit 667f8e2

Please sign in to comment.