From e6361749925494e8f8d83f27570cdd8002464af6 Mon Sep 17 00:00:00 2001 From: Joel Small Date: Tue, 3 Jun 2014 08:32:40 +0930 Subject: [PATCH] Added ability to generate dropdown from Enum field Alternatively, if statement could be: if(substr($column->dbType, 0, 4) === 'enum'), however expected implemented option to be more robust across other database formats. Created after followup on this issue: https://github.com/yiisoft/yii/issues/292#issuecomment-44780779 --- extensions/gii/generators/crud/Generator.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/extensions/gii/generators/crud/Generator.php b/extensions/gii/generators/crud/Generator.php index fb990fc..66c845a 100644 --- a/extensions/gii/generators/crud/Generator.php +++ b/extensions/gii/generators/crud/Generator.php @@ -247,7 +247,14 @@ class Generator extends \yii\gii\Generator } else { $input = 'textInput'; } - if ($column->phpType !== 'string' || $column->size === null) { + if(is_array($column->enumValues) && count($column->enumValues) > 0){ + $dropDownOptions = "'' => '', "; + foreach ($column->enumValues as $enumValue) + { + $dropDownOptions .= "'".$enumValue."' => '".$enumValue."', "; + } + return "\$form->field(\$model, '$attribute')->dropDownList([".$dropDownOptions."])"; + } else if ($column->phpType !== 'string' || $column->size === null) { return "\$form->field(\$model, '$attribute')->$input()"; } else { return "\$form->field(\$model, '$attribute')->$input(['maxlength' => $column->size])";