diff --git a/extensions/gii/CHANGELOG.md b/extensions/gii/CHANGELOG.md index 4a3ff11eb3..87eba4b826 100644 --- a/extensions/gii/CHANGELOG.md +++ b/extensions/gii/CHANGELOG.md @@ -27,6 +27,7 @@ Yii Framework 2 gii extension Change Log - Enh #2633: Keyboard shortcuts to browse through files (thiagotalma) - Enh #2822: possibility to generate I18N messages (lucianobaraglia) - Enh #2843: Option to filter files according to the action. (thiagotalma) +- Enh #2018: Search model not required anymore in crud generator. (johonunu) 2.0.0-alpha, December 1, 2013 ----------------------------- diff --git a/extensions/gii/generators/crud/Generator.php b/extensions/gii/generators/crud/Generator.php index 90901ec07b..aecc337e4e 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,22 @@ 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")); } @@ -438,7 +445,7 @@ class Generator extends \yii\gii\Generator if (is_subclass_of($class, 'yii\mongodb\ActiveRecord')) { return "'id' => (string)\$model->{$pks[0]}"; } else { - return "'id' => \$model->{$pks[0]}"; + return "'id' => \$model->{$pks[0]}"; } } else { $params = []; @@ -446,7 +453,7 @@ class Generator extends \yii\gii\Generator if (is_subclass_of($class, 'yii\mongodb\ActiveRecord')) { $params[] = "'$pk' => (string)\$model->$pk"; } else { - $params[] = "'$pk' => \$model->$pk"; + $params[] = "'$pk' => \$model->$pk"; } } diff --git a/extensions/gii/generators/crud/default/controller.php b/extensions/gii/generators/crud/default/controller.php index 9bfef66716..e51e63d7ff 100644 --- a/extensions/gii/generators/crud/default/controller.php +++ b/extensions/gii/generators/crud/default/controller.php @@ -31,7 +31,11 @@ namespace controllerClass, '\\')) ?> use Yii; use modelClass, '\\') ?>; +searchModelClass)): ?> use searchModelClass, '\\') . (isset($searchModelAlias) ? " as $searchModelAlias" : "") ?>; + +use yii\data\ActiveDataProvider; + use baseControllerClass, '\\') ?>; use yii\web\NotFoundHttpException; use yii\filters\VerbFilter; @@ -59,6 +63,7 @@ class extends bas */ public function actionIndex() { +searchModelClass)): ?> $searchModel = new ; $dataProvider = $searchModel->search(Yii::$app->request->getQueryParams()); @@ -66,6 +71,15 @@ class extends bas 'dataProvider' => $dataProvider, 'searchModel' => $searchModel, ]); + + $dataProvider = new ActiveDataProvider([ + 'query' => ::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..f56657b2ed 100644 --- a/extensions/gii/generators/crud/default/views/index.php +++ b/extensions/gii/generators/crud/default/views/index.php @@ -20,7 +20,7 @@ use indexWidgetType === 'grid' ? "yii\\grid\\GridView" : "yii\\w /** * @var yii\web\View $this * @var yii\data\ActiveDataProvider $dataProvider - * @var searchModelClass, '\\') ?> $searchModel +searchModelClass) ? " * @var " . ltrim($generator->searchModelClass, '\\') . " \$searchModel\n" : '' ?> */ $this->title = generateString(Inflector::pluralize(Inflector::camel2words(StringHelper::basename($generator->modelClass)))) ?>; @@ -29,8 +29,9 @@ $this->params['breadcrumbs'][] = $this->title;

Html::encode($this->title) ?>

- - indexWidgetType === 'grid' ? "// " : "") ?>echo $this->render('_search', ['model' => $searchModel]); ?> +searchModelClass)): ?> +indexWidgetType === 'grid' ? "// " : "") ?>echo $this->render('_search', ['model' => $searchModel]); ?> +

Html::a(generateString('Create {modelClass}', ['modelClass' => Inflector::camel2words(StringHelper::basename($generator->modelClass))]) ?>, ['create'], ['class' => 'btn btn-success']) ?> @@ -39,8 +40,7 @@ $this->params['breadcrumbs'][] = $this->title; indexWidgetType === 'grid'): ?> GridView::widget([ 'dataProvider' => $dataProvider, - 'filterModel' => $searchModel, - 'columns' => [ + searchModelClass) ? "'filterModel' => \$searchModel,\n 'columns' => [\n" : "'columns' => [\n"; ?> ['class' => 'yii\grid\SerialColumn'],