是的,我有:
Controller/PostsController.php
Model/Post.php
View/Posts/index.ctp
控制器找到数据库中的所有帖子,然后将值传递到我的view / Posts / index.ctp中,我在每个帖子中都会将其传递给我。
我现在想要能够访问相同的帖子,但在另一个控制器和视图上。我该怎么做?
PostsController 是;
class PostsController extends AppController {
public function index() {
$this->set('posts', $this->Post->find('all'));
}
}
查看/帖子/ index.ctp 是;
<table>
<tr>
<th>Id</th>
<th>Title</th>
<th>Actions</th>
<th>Created</th>
</tr>
<!-- Here's where we loop through our $posts array, printing out post info -->
<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo $post['Post']['id']; ?></td>
<td>
<?php
echo $this->Html->link(
$post['Post']['title']
);
?>
</td>
<td>
<?php echo $post['Post']['created']; ?>
</td>
</tr>
<?php endforeach; ?>
</table>
现在在我的AboutsController和Abouts / index.ctp中,我想能够访问相同的数据,以便我可以在view / abouts / index.ctp上显示帖子
当我创建视图/ abouts / index.ctp时,使用与View / Posts / index.ctp相同的代码我收到错误消息;
Undefined variable: posts [APP\View\Abouts\index.ctp, line 12]
这是因为我不知道如何在我的Abouts / Controller中访问数据。
答案 0 :(得分:1)
对于全局变量,我建议将它设置为appController,无论你在哪里,都可以在appController中访问它:
class AppController extends Controller {
var $uses = array('Post'); // to use the model
public function beforeFilter(){
$this->set('posts', $this->Post->find('all'));
}
}
然后你可以在任何视图中获得帖子......