我有一个带有数据的模型,我想用它来填充主页上的“Recent 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; }
我在find('all')上运行了调试,它返回了一个数组,但我没有看到我的代码有什么问题。我尝试使用find('list')并找到('first')并将$ data ['0'] ['Model'] ['field']更改为$ data ['Model'] ['field ']必要时作为结果。但是,它仍然为Model提供了一个Undefined Index错误。
有谁知道为什么会这样?
答案 0 :(得分:0)
如果你用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控制器复制到controllers目录中,并将上述代码放在display()
方法中?将pr($datas)
放入home.ctp
时,您会得到什么?