Cake PHP多视图页面可以访问相同的变量

时间:2013-09-30 21:49:35

标签: php cakephp

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

index.ctp页面要求我遍历的原因是什么(以及为什么) $ posts变量来获取数据,但view.ctp文件让我只是抓住$ post而不循环? 我在PostController.php中删除了以下操作 并且仍然可以呈现view.ctp文件,所以我认为两者没有连接。

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

2 个答案:

答案 0 :(得分:2)

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

指数()

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

视图()

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

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

编辑:

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

答案 1 :(得分:0)

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

这将返回一系列帖子 - 注意查找('all')

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

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

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