diff --git a/extensions/gii/generators/crud/Generator.php b/extensions/gii/generators/crud/Generator.php index 90901ec07b..3150a6e8fe 100644 --- a/extensions/gii/generators/crud/Generator.php +++ b/extensions/gii/generators/crud/Generator.php @@ -35,7 +35,7 @@ class Generator extends \yii\gii\Generator public $controllerClass; public $baseControllerClass = 'yii\web\Controller'; public $indexWidgetType = 'grid'; - public $searchModelClass; + public $searchModelClass = ''; /** * @inheritdoc @@ -61,7 +61,7 @@ class Generator extends \yii\gii\Generator { return array_merge(parent::rules(), [ [['moduleID', 'controllerClass', 'modelClass', 'searchModelClass', 'baseControllerClass'], 'filter', 'filter' => 'trim'], - [['modelClass', 'searchModelClass', 'controllerClass', 'baseControllerClass', 'indexWidgetType'], 'required'], + [['modelClass', 'controllerClass', 'baseControllerClass', 'indexWidgetType'], 'required'], [['searchModelClass'], 'compare', 'compareAttribute' => 'modelClass', 'operator' => '!==', 'message' => 'Search Model Class must not be equal to Model Class.'], [['modelClass', 'controllerClass', 'baseControllerClass', 'searchModelClass'], 'match', 'pattern' => '/^[\w\\\\]*$/', 'message' => 'Only word characters and backslashes are allowed.'], [['modelClass'], 'validateClass', 'params' => ['extends' => BaseActiveRecord::className()]], @@ -162,15 +162,20 @@ class Generator extends \yii\gii\Generator public function generate() { $controllerFile = Yii::getAlias('@' . str_replace('\\', '/', ltrim($this->controllerClass, '\\')) . '.php'); - $searchModel = Yii::getAlias('@' . str_replace('\\', '/', ltrim($this->searchModelClass, '\\') . '.php')); + $files = [ new CodeFile($controllerFile, $this->render('controller.php')), - new CodeFile($searchModel, $this->render('search.php')), ]; + if(!empty($this->searchModelClass)){ + $searchModel = Yii::getAlias('@' . str_replace('\\', '/', ltrim($this->searchModelClass, '\\') . '.php')); + $files[] = new CodeFile($searchModel, $this->render('search.php')); + } + $viewPath = $this->getViewPath(); $templatePath = $this->getTemplatePath() . '/views'; foreach (scandir($templatePath) as $file) { + if(empty($this->searchModelClass) && $file==='_search.php') continue; if (is_file($templatePath . '/' . $file) && pathinfo($file, PATHINFO_EXTENSION) === 'php') { $files[] = new CodeFile("$viewPath/$file", $this->render("views/$file")); } diff --git a/extensions/gii/generators/crud/default/controller.php b/extensions/gii/generators/crud/default/controller.php index 9bfef66716..209a76d6fd 100644 --- a/extensions/gii/generators/crud/default/controller.php +++ b/extensions/gii/generators/crud/default/controller.php @@ -31,7 +31,11 @@ namespace = StringHelper::dirname(ltrim($generator->controllerClass, '\\')) ?> use Yii; use = ltrim($generator->modelClass, '\\') ?>; +searchModelClass)){ ?> use = ltrim($generator->searchModelClass, '\\') . (isset($searchModelAlias) ? " as $searchModelAlias" : "") ?>; + +use yii\data\ActiveDataProvider; + use = ltrim($generator->baseControllerClass, '\\') ?>; use yii\web\NotFoundHttpException; use yii\filters\VerbFilter; @@ -59,6 +63,7 @@ class = $controllerClass ?> extends = StringHelper::basename($generator->bas */ public function actionIndex() { +searchModelClass)){ ?> $searchModel = new = isset($searchModelAlias) ? $searchModelAlias : $searchModelClass ?>; $dataProvider = $searchModel->search(Yii::$app->request->getQueryParams()); @@ -66,6 +71,15 @@ class = $controllerClass ?> extends = StringHelper::basename($generator->bas 'dataProvider' => $dataProvider, 'searchModel' => $searchModel, ]); + + $dataProvider = new ActiveDataProvider([ + 'query' => = $modelClass ?>::find(), + ]); + + return $this->render('index', [ + 'dataProvider' => $dataProvider, + ]); + } /** diff --git a/extensions/gii/generators/crud/default/views/index.php b/extensions/gii/generators/crud/default/views/index.php index 0e6118198b..383f42f868 100644 --- a/extensions/gii/generators/crud/default/views/index.php +++ b/extensions/gii/generators/crud/default/views/index.php @@ -20,7 +20,7 @@ use = $generator->indexWidgetType === 'grid' ? "yii\\grid\\GridView" : "yii\\w /** * @var yii\web\View $this * @var yii\data\ActiveDataProvider $dataProvider - * @var = ltrim($generator->searchModelClass, '\\') ?> $searchModel += !empty($generator->searchModelClass)?" * @var ".ltrim($generator->searchModelClass, '\\')." \$searchModel\n":'' ?> */ $this->title = = $generator->generateString(Inflector::pluralize(Inflector::camel2words(StringHelper::basename($generator->modelClass)))) ?>; @@ -29,8 +29,7 @@ $this->params['breadcrumbs'][] = $this->title;
= "= " ?>Html::a(= $generator->generateString('Create {modelClass}', ['modelClass' => Inflector::camel2words(StringHelper::basename($generator->modelClass))]) ?>, ['create'], ['class' => 'btn btn-success']) ?> @@ -39,8 +38,7 @@ $this->params['breadcrumbs'][] = $this->title; indexWidgetType === 'grid'): ?> = "= " ?>GridView::widget([ 'dataProvider' => $dataProvider, - 'filterModel' => $searchModel, - 'columns' => [ + = !empty($generator->searchModelClass)?"'filterModel' => \$searchModel,\n\t\t'columns' => [\n":"'columns' => [\n"; ?> ['class' => 'yii\grid\SerialColumn'],