Почему данные этой модели не загружаются в контроллер страниц должным образом? - PullRequest
0 голосов
/ 21 сентября 2010

У меня есть Модель с данными, которые я хочу использовать для заполнения раздела «Недавние XYZ» на домашней странице, который управляется контроллером Pages.

В контроллере Pages у меня есть следующий код:

$this->loadModel('Model');
$this->set('datas', array($this->Model->find('all', array('limit' => 5))));

Затем в Home.ctp я попытался получить доступ к данным с помощью:

if(!empty($datas)) { foreach($datas as $data):
echo $data['0']['Model']['field'];
endforeach; }

Я выполнил отладку при поиске ('all'), и он возвращаетсямассив, но я не вижу ничего плохого в моем коде.И я попытался использовать find ('list') и find ('first') и заменил $ data ['0'] ['Model'] ['field'] на $ data ['Model'] ['field'] когда это необходимо.Но все равно выдает ошибку неопределенного индекса для модели.

Кто-нибудь знает, почему это происходит?

1 Ответ

0 голосов
/ 21 сентября 2010

Вы не должны ставить пронумерованный ключ, если вы перебираете его с помощью foreach.Итак,

echo $data['0']['Model']['field'];

должно быть:

echo $data['Model']['field'];

РЕДАКТИРОВАТЬ: Итак, чтобы уточнить, если вы используете find('all') и итерации по возвращенному массивус foreach вы бы хотели $data['Model']['field'].Если вы не выполняли итерацию, а просто хотели получить первый результат, вы должны использовать $data[0]['Model']['field'].Если вы используете find('first'), вы можете просто использовать $data['Model']['field'], и вы не захотите использовать foreach в этом случае.

Так что меня немного смущает контекст этого.Вы скопировали контроллер Pages в каталог контроллеров и поместили приведенный выше код в метод display()?Что вы получите, когда положите pr($datas) в home.ctp?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...