Будьте осторожны с requestAction, если только вы не используете эффективное кэширование, это может реально замедлить работу вашего приложения, поскольку каждый раз, когда вы его вызываете, запускается новый цикл запросов.
Ответ Трэвиса Лелеу будет стандартным способом ведения дел. Но если вы должны импортировать данные (для переносимости или по любой другой причине) в элемент, тогда requestAction - не тот путь.
Поскольку вы не выполняете какую-либо бизнес-логику, которая должна присутствовать в контроллере, я настоятельно рекомендую вам импортировать и создать экземпляр класса модели в виде одиночного элемента в вашем элементе. Вы можете сделать это, используя ClassRegistry :: init ();
$Photo = ClassRegistry::init('Photo');
$Photo->find('all');
Если вам нужно выполнить дополнительную обработку данных, вы должны сделать это в самой модели либо с помощью обратного вызова Cakes afterFind, либо с помощью пользовательского метода в вашей модели Photo:
class Photo extends AppModel {
function customFind () {
$photos = $this->find('all');
foreach ($photos as $photo) {
//processing code here...
}
}
}
Тогда назовите это в своей стихии:
$Photo = ClassRegistry::init('Photo');
$Photo->customFind();
По сути, я пытаюсь донести до вас это единственная ситуация, когда requestAction подходит, когда вам нужно выполнять такие действия, как перенаправление или использование компонентов.
Если вы просто извлекаете и / или манипулируете данными, то они принадлежат модели.