Может глупый вопрос, но все же хотелось бы понять насколько правильно я все делаю.
Итак, есть проект на нескольких языках.
Для удобства создания/обновления записей в БД был написан виджет LangActiveForm. Он наследуется от \yii\widgets\ActiveForm.
Задача его проста:
1. Добавить JS файл (отвечает за логику переключения между языками, валидацию...)
2. Переопределить public метод field. Так, чтобы, если в $model передан массив (массив языковых вариаций), то возвращался не ActiveField, а LangActiveField (он просто выводит вместо одного поля множество полей под каждый язык).
Все работает. Все ок.
Но возникает задача: добавить тултипы (подсказки) с определенным внешним видом для полей формы. Подсказки должны быть получены из модели через getAttributeHint(...). Это все должно работать и при применении обычной ActiveForm и при использовании LangActiveForm.
Вот так это выглядит:
Решение.
Создаю новый виджет backend\widgets\activeForm\ActiveForm он наследует \yii\widgets\ActiveForm;
Он переопределяет $fieldClass.
В backend\widgets\activeForm\ActiveField переопределяю $template и метод hint(...)
Теперь наследую мой LangActiveForm от нового backend\widgets\activeForm\ActiveForm.
Таким образом у меня есть подсказки и при использовании backend\widgets\activeForm\ActiveForm и при LangActiveForm.
При работе с сущностью у которой есть переводы я использую LangActiveForm, а при работе с записями без переводов - backend\widgets\activeForm\ActiveForm.
Вопрос. Не лучше ли мне наследовать backend\widgets\activeForm\ActiveForm от LangActiveForm. И таким образом применять backend\widgets\activeForm\ActiveForm абсолютно везде - и в записях с переводами и без?