Часто на форумі у розробників компонентів виникає питання про взаємодію контролера і моделі. Вони не знають як правильно передати дані з контролера в модель. Немає нічого простіше - використовуйте стан моделі.
Припустимо, що ми хочемо отримати якісь дані з запиту і використовувати їх в моделі. Можна отримати ці дані безпосередньо з моделі, але в парадигмі MVC модель повинна бути ізольована від зовнішнього оточення, тому такий спосіб не дуже хороший.
В Joomla для цього є більш подходяшій спосіб - стан моделі. По суті, стан моделі - це своєрідне сховище тимчасових даних, які не належать безпосередньо до класу моделі, але потрібні їй для здійснення певних операцій в певний момент часу. Стан моделі в Joomla являє собою об'єкт, робота з яким здійснюється за допомогою двох методів класу JModelLegacy:
- getState ($ property = null, $ default = null) - отримання значення властивості зі стану, а якщо властивість не знайдено, другим параметром можна передати його значення за замовчуванням. Якщо викликати метод без параметрів, то буде повернутий об'єкт стану.
- setState ($ property, $ value = null) - установка значення властивості в стан
Стосовно до контролера це виглядає наступним чином:
Далі в моделі отримуємо ці дані:
До речі, стан моделі можна легко отримати в поданні. Думаю, що вам знайома ця рядок:
Це цікаво:
Пишу скрізь і потроху;) Працюю над Joomla Issues Tracker.
Joomla! ® CMS - мабуть, найкраща система управління контентом з відкритим вихідним кодом
Joomla! - це більше, ніж просто програмне забезпечення, це люди, які включають розробників, дизайнерів, системних адміністраторів, перекладачів, копірайтерів, і, що найголовніше - простих користувачів.
Ми раді запросити вас до лав нашої спільноти!