Поведінки (behaviors) в yii2

Поведінки (behaviors) в yii2

Усередині поведінки можна звертатися до компонента, до якого воно прикріплене, використовуючи властивість yii \ base \ Behavior :: $ owner:

Є такі способи задати потрібну поведінку класу:
  1. Прив'язка на уровнеоб'екта (контролер, модель, компонент ...) - перевизначення методу behaviors ();
  2. Динамічна прив'язка (з методів / дії) не перевизначаючи метод behaviors ();
  3. Прив'язка через конфігурацію.

Прив'язка на рівні об'єкта

Якщо ви робите окремий клас, то він розширює модель, ті публічні методи цього класу стають доступними з моделі. Так само в класі можна прописати спрацьовування поводжень на подію.

Приклад.
в контролері створюється поведінку яке викликається до виконання дій.

'Slug' - назва масиву даних, може бути будь-яким, в т.ч. не збігатися з назвою класу або взагалі бути відсутнім. В даному випадку, поведінка називається іменованих.
'Class' - вказується викликається клас.
'Iniciali' - публічна змінна яка передає дані в клас. Оскільки даний клас Slug може викликатися для різних контролерів, моделей ... можуть передаватися різні значення змінних.

Якщо не потрібно передавати дані в клас, то можна написати більш стисло і без назви (анонімне поведінку):

Клас поведінки може виглядати так:
В даному випадку поведінка використовується для прив'язки події до дії контролера. А саме - перед виконанням будь-якої дії даного контролера виконається метод getMyMetod () з класу поведінки.

yii \ web \ Controller - вказується до чого прив'язуємо
EVENT_BEFORE_ACTION - подія яка повинна спрацювати (см.спісок стандартних подій тут)
getMyMetod - назва методу класу, який зголоситься при настанні події.

У нашій поведінці створюється глобальний параметр додатки 'fio' зі значенням post_ksl перед викликом будь-якої дії. Отримати значення можна так:


Крім використання подій, методи класу зазначеного в поведінці розширюють об'єкт в якому ця поведінка визначено (контролер, модель ...)

Тобто якщо додати в class Slug метод


Його можна буде викликати в діях контролера:

Динамічна прив'язка (з методів / дії) не перевизначаючи метод behaviors ().


Для того, щоб прикріпити поведінку динамічно, необхідно викликати метод yii \ base \ Component :: attachBehavior () необхідного компонента.
Першим параметром вказується довільну назву поведінки.


Приклад прив'язки класу Slug до Controller Так само можна підключити відразу декілька поводжень:

Прив'язка через конфігурацію

Якщо ви підключаєте свої компоненти в файлі \ config \ main.php. то прив'язати поведінку можна відразу при підключенні.
Робиться це за допомогою приставки «as», після чого слід назва поведінки.


Після цього при виклику компонента - класу Comp будуть доступні методи і з поведінки (клас Slug).
наприклад:


Можна прив'язати поведінки для самого об'єкта додатка ($ app):
У config \ main.php одним з елементів масиву в return:

Після цього в додаток додадуться властивості і методи із зазначеного класу. Наприклад метод name (). який можна тепер викликати так:

Якщо не потрібно передавати параметри, то можна прописати одним рядком:
або (одне і теж)

OpenCart 2+ опис процесу завантаження програми.

Етапи завантаження конфігурації OpenCart версії 2+ Від точки входу до підключення потрібних бібліотек.

Використання подій в PHP.

Наведені приклади створення і використання подій в php.

Створення розширення (пакета) для Yii2.

У даній статті розповім як створити розширення для програми на php-фреймворку Yii2 для його використання в інших своїх проектах і для використання іншими розробниками.

Rahmat! Men o'zbek yigitman. Shunga o'zbekcha gapiraman. Tushunmagan bo'lsangiz uzur.

Дякуємо. Думав просто може в цьому коді можна що то прибрати і буде працювати.

А якщо в URL не потрібно відображення мовної мітки, то як це можна зробити?

Для показу цього елементу вам необхідно встановити FlashPlayer та включити в броузері Java Script.

Схожі статті