Yii2 behaviors

Крім цієї поведінки Yii пропонує ще кілька готових до використання поведінок, наприклад, SluggableBehavior, AttributeBehavior та інші. Також Yii дозволяє створювати і власні поведінки – ця тема нас цікавить у рамках поточної статті.

Для того, щоб реалізувати поведінку, необхідно створити клас, що розширює базовий клас yii \ base \ Behavior. Створимо докорінно папку components і в ній позовний клас:

yii2

Сучасні тенденції та підходи у веб-розробці

Дізнайтеся алгоритм швидкого зростання з нуля у сайтобудуванні

yii2

Як навчальний приклад ми створимо поведінку, яка певним чином змінюватиме найменування статей або інших матеріалів, для яких ми будемо використовувати поведінку.

Далі додамо в клас створюваного behavior наступний код:

Давайте розберемо його. Поведінка має одну властивість, яку ми назвали $title. Назвати його можна як завгодно, це не так важливо. Важливіше тут значення за промовчанням. Це значення відповідає атрибуту моделі. Оскільки ми хочемо працювати з найменуваннями матеріалів, значенням за умовчанням я вибрав title, оскільки звик використати саме його. Відповідно, якщо поле моделі називається саме так, користувач при конфігурації поведінки може не вказувати найменування атрибута. Якщо найменування відрізняється, тоді користувач його перевизначить при прикріпленні behavior.

Далі йде метод events. Даний метод ми повинні перевизначити, якщо наша поведінка має реагувати деякі події. У прикладі вище наша поведінка буде реагувати на подію передвимогою. Для цієї події ми призначаємо метод changeTitle, який описуємо нижче. Як параметр метод приймає об'єктподії. У методі ми надрукуємо його на екран і завершимо подальше виконання програми. Погляньмо на нього. Для цього спробуємо додати ще одну новину. Але перед цим прикріпимо поведінку до моделі. Там у нас вже використовується поведінка TimestampBehavior, просто допишемо ще своє:

yii2

Сучасні тенденції та підходи у веб-розробці

Дізнайтеся алгоритм швидкого зростання з нуля у сайтобудуванні