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']['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,
should be:
EDIT: So, to clarify, if you are using
find('all'), and iterating over the returned array withforeach, 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 usingfind('first'), you could just use$data['Model']['field'], and you would not want to use theforeachin 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 putpr($datas)inhome.ctp?