schmunk42\giiant\generators\crud\providers\core\OptsProvider::activeField PHP Method

activeField() public method

public activeField ( $attribute )
    public function activeField($attribute)
    {
        $column = $this->generator->getColumnByAttribute($attribute);
        if (!$column) {
            return;
        }
        $modelClass = $this->generator->modelClass;
        $func = 'opts' . str_replace('_', '', $attribute);
        $camel_func = 'opts' . str_replace(' ', '', ucwords(implode(' ', explode('_', $attribute))));
        if (method_exists($modelClass::className(), $func)) {
            $mode = isset($this->columnNames[$attribute]) ? $this->columnNames[$attribute] : null;
        } elseif (method_exists($modelClass::className(), $camel_func)) {
            $func = $camel_func;
            $mode = isset($this->columnNames[$attribute]) ? $this->columnNames[$attribute] : null;
        } else {
            return;
        }
        switch ($mode) {
            case 'radio':
                return <<<EOS
                    \$form->field(\$model, '{$attribute}')->radioList(
                        {$modelClass}::{$func}()
                    );
EOS;
                break;
            case 'select2':
                return <<<EOS
                    \$form->field(\$model, '{$attribute}')->widget(\\kartik\\select2\\Select2::classname(), [
                        'name' => 'class_name',
                        'model' => \$model,
                        'attribute' => '{$attribute}',
                        'data' => {$modelClass}::{$func}(),
                        'options' => [
                            'placeholder' => {$this->generator->generateString('Type to autocomplete')},
                            'multiple' => false,
                        ]
                    ]);
EOS;
                break;
            default:
                // Render a dropdown list if the model has a method optsColumn().
                return <<<EOS
                        \$form->field(\$model, '{$attribute}')->dropDownList(
                            {$modelClass}::{$func}()
                        );
EOS;
        }
        return;
    }