Why Isn't This Model Data Loading Into Pages Controller Properly?
I have a Model with data that I want to use to populate a "Recent XYZ" section on the homepage, which is controlled by the Pages controller.
In the Pages controller, I have the following code:
$this->loadModel('Model');
$this->set('datas', array($this->Model->find('all', array('limit' => 5))));
Then, in Home.ctp, I have tried to access the data via:
if(!empty($datas)) { foreach($datas as $data):
echo $data['0'开发者_StackOverflow中文版]['Model']['field'];
endforeach; }
I ran debug on the find('all') and it is returning an array, but I don't see anything wrong with my code. And I've tried using find('list') and find('first') and changin the $data['0']['Model']['field'] to $data['Model']['field'] when necessary as a result. But, it still gives an Undefined Index error for Model.
Does anyone know why this is happening?
You shouldn't put the numbered key if you're iterating over it with a foreach. So,
echo $data['0']['Model']['field'];
should be:
echo $data['Model']['field'];
EDIT: So, to clarify, if you are using find('all')
, and iterating over the returned array with foreach
, you would want $data['Model']['field']
. If you were not iterating, but just wanted the first result, you would use $data[0]['Model']['field']
. If you are using find('first')
, you could just use $data['Model']['field']
, and you would not want to use the foreach
in this case.
So I'm a little confused by the context of this. You have copied the Pages controller into controllers directory, and put the above code within the display()
method? What do you get when you put pr($datas)
in home.ctp
?
精彩评论