0

我正在做博客教程(CakePHP 2.4.1)并且有一个问题。

index.ctp 页面要求我循环访问 $posts 变量以获取数据的原因是什么(以及为什么),但 view.ctp 文件让我只需获取 $post 而无需循环?我删除了 PostController.php 中的以下操作,仍然可以渲染 view.ctp 文件,所以我认为两者没有连接。

 public function index() {
    $this->set('posts', $this->Post->find('all'));
}
4

2 回答 2

2

您正在控制器的两个功能中设置 post:

指数()

$this->set('posts', $this->Post->find('all'));

看法()

$post = $this->Post->findById($id);
$this->set('post', $post);

如果您无法访问变量会很奇怪,但在您的示例中似乎一切正常

编辑:

您循环遍历索引中的数组,因为数组中有多个帖子。在视图中,您只设置了一个包含一个帖子的奇异数组,因此无需遍历任何内容,您可以直接获取元素。

于 2013-09-30T21:56:53.120 回答
0
    $this->set('posts', $this->Post->find('all')); 

这将返回一个帖子数组 - 注意 find('all')

    $this->set('post', $this->Post->findById($id));

这将通过传递的 $id 参数返回单个帖子。

您必须遍历 $posts 的原因是因为它是一个数组(由 find all 返回),其中 $post 只是 findById 返回的单个帖子)

于 2013-10-08T19:02:42.540 回答