Giix + Enum Cgridview Filter

Hi people!

I’s my first month using Yii and I’m very happy with It!

I use Giix to generate my CRUD methods. After implementing the solution described here, I missed a dropdown filter in my CGridViews.

The solution was modifying the GiixCrudCode class file. He is the modification:

I changed (method generateGridViewColumn):




			if (strtoupper($column->dbType) == 'TINYINT(1)'

					|| strtoupper($column->dbType) == 'BIT'

					|| strtoupper($column->dbType) == 'BOOL'

					|| strtoupper($column->dbType) == 'BOOLEAN') {

				return "array(	

					'name' => '{$column->name}',

					'value' => '(\$data->{$column->name} === 0) ? Yii::t(\\'app\\', \\'No\\') : Yii::t(\\'app\\', \\'Yes\\')',

					'filter' => array('0' => Yii::t('app', 'No'), '1' => Yii::t('app', 'Yes')),

					)";

				} else // Common column.

					return "'{$column->name}'";

		} else { // FK.				



To:




if (strtoupper($column->dbType) == 'TINYINT(1)'

					|| strtoupper($column->dbType) == 'BIT'

					|| strtoupper($column->dbType) == 'BOOL'

					|| strtoupper($column->dbType) == 'BOOLEAN') {

				return "array(	

					'name' => '{$column->name}',

					'value' => '(\$data->{$column->name} === 0) ? Yii::t(\\'app\\', \\'No\\') : Yii::t(\\'app\\', \\'Yes\\')',

					'filter' => array('0' => Yii::t('app', 'No'), '1' => Yii::t('app', 'Yes')),

					)";

				//## MODIFIED PART BEGIN

				} else if (stripos($column->dbType, 'enum') !== false) {

					

					$items_to_remove = array("enum(",")");

					$cleared_enum = str_replace($items_to_remove, "", $column->dbType);

					$array_options = explode(',', $cleared_enum);

					

					$filter = 'array(';

					foreach ($array_options as $option) {

						$filter = $filter . $option . ' => ' . 'Yii::t(\'app\','. $option .'),';

					}

					$filter = rtrim($filter, ",");

					

					return "array(

						'name' => '{$column->name}',

						'value' => '\$data->{$column->name}',

						'filter' => $filter),

						)";

				//## MODIFIED PART END

				} else // Common column.

					return "'{$column->name}'";

		} else { // FK.



I think that can be helpful to somebody.

Thanks!