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!