<?php 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 */ $modelClass = StringHelper::basename($generator->modelClass); $searchModelClass = StringHelper::basename($generator->searchModelClass); $rules = $generator->generateSearchRules(); $labels = $generator->generateSearchLabels(); $searchAttributes = $generator->getSearchAttributes(); $searchConditions = $generator->generateSearchConditions(); echo "<?php\n"; ?> namespace <?= StringHelper::dirname(ltrim($generator->searchModelClass, '\\')) ?>; use yii\base\Model; use yii\data\ActiveDataProvider; use <?= ltrim($generator->modelClass, '\\') ?>; /** * <?= $searchModelClass ?> represents the model behind the search form about <?= $modelClass ?>. */ class <?= $searchModelClass ?> extends Model { public $<?= implode(";\n\tpublic $", $searchAttributes) ?>; public function rules() { return [ <?= implode(",\n\t\t\t", $rules) ?>, ]; } /** * @inheritdoc */ public function attributeLabels() { return [ <?php foreach ($labels as $name => $label): ?> <?= "'$name' => '" . addslashes($label) . "',\n" ?> <?php endforeach; ?> ]; } public function search($params) { $query = <?= $modelClass ?>::find(); $dataProvider = new ActiveDataProvider([ 'query' => $query, ]); if (!($this->load($params) && $this->validate())) { return $dataProvider; } <?= implode("\n\t\t", $searchConditions) ?> return $dataProvider; } protected function addCondition($query, $attribute, $partialMatch = false) { $value = $this->$attribute; if (trim($value) === '') { return; } if ($partialMatch) { $query->andWhere(['like', $attribute, $value]); } else { $query->andWhere([$attribute => $value]); } } }