Як передати дані з контролера в модель - joomla! По російськи

Часто на форумі у розробників компонентів виникає питання про взаємодію контролера і моделі. Вони не знають як правильно передати дані з контролера в модель. Немає нічого простіше - використовуйте стан моделі.

Припустимо, що ми хочемо отримати якісь дані з запиту і використовувати їх в моделі. Можна отримати ці дані безпосередньо з моделі, але в парадигмі MVC модель повинна бути ізольована від зовнішнього оточення, тому такий спосіб не дуже хороший.

В Joomla для цього є більш подходяшій спосіб - стан моделі. По суті, стан моделі - це своєрідне сховище тимчасових даних, які не належать безпосередньо до класу моделі, але потрібні їй для здійснення певних операцій в певний момент часу. Стан моделі в Joomla являє собою об'єкт, робота з яким здійснюється за допомогою двох методів класу JModelLegacy:

  • getState ($ property = null, $ default = null) - отримання значення властивості зі стану, а якщо властивість не знайдено, другим параметром можна передати його значення за замовчуванням. Якщо викликати метод без параметрів, то буде повернутий об'єкт стану.
  • setState ($ property, $ value = null) - установка значення властивості в стан

Стосовно до контролера це виглядає наступним чином:

Далі в моделі отримуємо ці дані:

До речі, стан моделі можна легко отримати в поданні. Думаю, що вам знайома ця рядок:

Це цікаво:

Пишу скрізь і потроху;) Працюю над Joomla Issues Tracker.

Joomla! ® CMS - мабуть, найкраща система управління контентом з відкритим вихідним кодом

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

Ми раді запросити вас до лав нашої спільноти!

Схожі статті