Причина, по которой вы получаете ошибку, состоит в том, что вы должны сначала инициализировать массив , а затем вы можете push()
значения для него.
IUser
с помощью year = [{your year}]
, а затем , затем , вы можете выдвинуть в него больше значений. IUser
объект с пустым массивом year, и затем вы можете выдвинуть значения к нему. Если компонент анализирует загрузку данных из различных источников , его, вероятно, можно записать как поведение.
Если нет, и у вас нет другого выбора, кроме как использовать модель в своем компоненте, обязательно сделайте это правильно:
$this->ModelName = ClassRegistry::init('ModelName');
Лично я не вижу проблемы с этим, так как основные компоненты ( например, компонент Acl). Пока ваш компонент обрабатывает логику приложения , а модели обрабатывают данные , все будет в порядке.
На мой взгляд, СУХОЙ является критическим путем. С этой целью я вижу два варианта:
Если бы дело дошло до трудного выбора, я бы допустил ошибку, оставив свое приложение СУХИМЫМ, а не придерживаясь строгой дисциплины MVC.
можно утверждать, что если вы хотите записать данные, сгенерированные в компоненте и иметь возможность упаковать компонент для распространения, это имеет смысл загрузить модель в вашем компоненте (особенно если Модель является частью вашего компонента).
Например, у меня компонент APARIZE.NET AIM (авторизация кредитной карты).
Из моего контроллера я вызывающую функцию зарядки компонентов. Auralize.net отправляет мне ответ (в пределах компонента) и в соответствии с сухой, я хотел бы сохранить данные в компоненте, поэтому мне не нужно повторять сохранение данных от того, где называется функция заряда.
Еще один плюс, чтобы освободить от Конвенции, будет тот факт, что я мог бы использовать модель из компонента, и не должен иметь модель в приложении.
Что вы думаете?