如何使用Cakephp访问不同控制器中的变量

时间:2014-08-18 10:11:19

标签: php cakephp cakephp-2.0

是的,我有:

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中访问数据。

1 个答案:

答案 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'));
      }
}

然后你可以在任何视图中获得帖子......