public static function editable(ActiveRecord $model, $attribute, $editable_type = Editable::INPUT_TEXT, $options = [])
 {
     /* @var Module $module */
     $module = \Yii::$app->getModule('ycm-utils');
     // Init config
     $config = ['attribute' => $attribute, 'class' => EditableColumn::className(), 'editableOptions' => ['inputType' => $editable_type, 'ajaxSettings' => ['url' => Url::to(['/ycm/model/editable', 'name' => $module->ycm->getModelName($model)])]]];
     // Add inner widget config if available
     if (isset(self::$widgetEditableTypeMap[$editable_type])) {
         $typeMethod = self::$widgetEditableTypeMap[$editable_type];
         $config['editableOptions']['options'] = self::$typeMethod($model, $attribute);
     }
     // Add relation config if available
     if ($model->getRelation($attribute, false)) {
         $config = ArrayHelper::merge($config, self::relation($model, $attribute), self::editableRelationConfig($model, $attribute));
     }
     // Check from db selectable type
     if ($choices = ModelHelper::getBooleanChoices($model, $attribute)) {
         $config = ArrayHelper::merge($config, ['editableOptions' => ['options' => ['data' => $choices], 'displayValueConfig' => $choices]], self::selectWidgetFilterConfig($choices));
     } elseif ($choices = ModelHelper::getEnumChoices($model, $attribute)) {
         $config = ArrayHelper::merge($config, ['editableOptions' => ['inputType' => Editable::INPUT_SELECT2, 'options' => ['data' => $choices], 'displayValueConfig' => $choices]], self::selectWidgetFilterConfig($choices));
     }
     return ArrayHelper::merge($config, $options);
 }