Download the PHP package sichkarev/yii2-translatable-attributes without Composer
On this page you can find all versions of the php package sichkarev/yii2-translatable-attributes. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download sichkarev/yii2-translatable-attributes
More information about sichkarev/yii2-translatable-attributes
Files in sichkarev/yii2-translatable-attributes
Package yii2-translatable-attributes
Short Description Component add support translatable properties to ActiveRecord models
License MIT
Informations about the package yii2-translatable-attributes
Описание
Компонент пригодится вам, если у модели ActiveRecord необходимо переводить какие-либо свойства на разные языки.
Требования:
- Yii2
- PHP 5.6 и выше
Установка
Установка через composer
Подключение
-
Создайте поле для хранения переводов с типом json (лучше всего), text или varchar
- Подключите компонент TranslatableComponent в секции components конфигурационного файла Yii2 и укажите список используемых языков:
Для добавления нового языка реализуйте LanguageInterface у класса, заполните нужные данные и добавьте в свойство languages
-
Подключите TranslateActiveRecordTrait к классу модели, в которой необходимо переводить свойства
- Подключите TranslatableBehavior, например используя addTranslatableBehavior (реализован в TranslateActiveRecordTrait)
-
Реализуйте у класса интерфейс TranslatableInterface и создайте метод attributeNameForTranslate(). Этот метод должен вернуть название существующего поля, созданного в п.1.
-
В комментариях к классу укажите поля, которые имеют собственные значения для каждого языка добавив слово @translate. Свойства с переводами нужно описать для удобства работы с ними, но их можно физически не создавать (они будут созданы динамически). Эти свойства являются частью модели и могут участвовать в валидации и прочих прикладных задачах (например в CRUD). Если требуются произвольные подписи, то вы можете добавить названия полей в метод attributeLabels().
- Добавьте возможность редактирования поля на форме CRUD:
свойство className указывает имя CSS-класса, которое будет применено для блоков
Функции:
- setContextLanguage(LanguageInterface $lang) - устанавливает языковой контекст
- clearLangContext() - очищает языковой контекст
- andFilterWhereTranslate - добавляет фильтрацию по полю
Например:
Полный пример различных возможностей представлен в атотесте src/Tests/TranslateActiveRecordTest.php
Тестовый CRUD
Для понимания того как все работает в проекте есть тестовый CRUD. Для запуска тестового CRUD сделайте следующее:
-
Подключите модуль в один из ваших каталогов (backend, frontend)
-
Запустите миграцию для создания тестовой таблицы
- Откройте CRUD по адресу /translate/ вашего каталога
Вроде на этом всё, если что пишите комментарии, правьте код и отправляйте реквесты.