我开始研究CakePHP,我遇到了问题。
我在博客项目中有一个文章控制器,我想在我的主页上显示X最后一篇文章,这是页面模板中的home.ctp。
这是我在Articles控制器中的文章功能:
public function recentArticles(){
$recentArticles = $this->Articles->find('all', [
'limit' => 5,
'order' => 'Articles.created DESC'
]);
$this->set('recentArticles', $recentArticles);
$this->render('/Pages/home');
}
以下是模板中我试图显示文章的部分:
<?php foreach ($recentArticles as $article): ?>
<section class="col-4-ligne">
<?=$this->Html->image('slide3.jpg', array('alt' => 'nom du slide', 'class' => 'img-responsive'))?>
<a href="categories/view/1"><section class="btn btn-lg btn-danger principale"><?= $article->title ?></section></a>
</section>
<?php endforeach; ?>
我尝试在控制器中使用$ this-&gt;渲染,我也尝试将我的函数放入Pages控制器中,如下所示:
public function recentArticles(){
$this->loadModel('Articles');
$recentArticles = $this->Articles->find('all', [
'limit' => 5,
'order' => 'Articles.created DESC'
]);
$this->set('recentArticles', $recentArticles);
$this->render('/Pages/home');
}
但在每种情况下,我在模板中得到的错误都是“Undefined variable:recentArticles”。
有什么想法吗?
编辑:好的,所以我没有成功调用recentArticles函数,所以我将代码放入默认的函数显示,这样就可以了。 我不知道这是不是很好的方法。
public function display()
{
$path = func_get_args();
$count = count($path);
if (!$count) {
return $this->redirect('/');
}
$page = $subpage = null;
if (!empty($path[0])) {
$page = $path[0];
}
if (!empty($path[1])) {
$subpage = $path[1];
}
$this->set(compact('page', 'subpage'));
//Latest articles
$this->loadModel('Articles');
$recentArticles = $this->Articles->find('all', [
'limit' => 5,
'order' => 'Articles.created DESC'
]);
$this->set('recentArticles', $recentArticles);
try {
$this->render(implode('/', $path));
} catch (MissingTemplateException $e) {
if (Configure::read('debug')) {
throw $e;
}
throw new NotFoundException();
}
}