从Controller查看内容并在单独的控制器和视图上查看

时间:2014-08-18 08:22:04

标签: cakephp cakephp-2.0 cakephp-2.1 cakephp-2.3

我有一个

Controller/PostsController.php
Model/Post.php
View/Posts/Index.ctp

如果有人关注了cakephp博客教程我已经完成了。 任何人都没有,它基本上是一个允许你添加标题和评论的网站。就像一个论坛。

现在我有了这个设置,但我想要包含一个名为home的新页面。在这个页面上,我不会在一个较小的容器中显示我创建的论坛。

我不确定如何将帖子的视图添加到新的控制器/模型/视图。

这是PostsController.php:

class PostsController extends AppController {


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

}

这是View / Posts / 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>

因此,如何将相同的帖子包含在新的控制器和视图中,让我们说:

HomesController.php 视图/院/ index.ctp

EDIT // // EDIT EDIT

对,我现在通过添加成功完成了一半      $这 - &GT;呈现(&#39; / Abouts /索引&#39); 到我的PostsController

但现在我得到一个错误说 &#34;未定义的变量:帖子[APP \ View \ Abouts \ index.ctp,第12行]&#34;

我不确定如何在我的约会视图中定义这些

2 个答案:

答案 0 :(得分:1)

在&#39; abouts&#39;行动,你做的事与你在索引中所做的一样:

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

网站注意:似乎值得您花时间再次浏览博客教程以进行复习。我相信这种事情已经非常彻底了。

答案 1 :(得分:0)

来自cakephp书籍

  

许多应用程序都有小块的演示代码,需要在页面之间重复,有时在布局中的不同位置。 CakePHP可以帮助您重复需要重复使用的网站部分。这些可重复使用的部件称为Elements。广告,帮助框,导航控件,额外菜单,登录表单和标注通常在CakePHP中作为元素实现。元素基本上是一个迷你视图,可以包含在其他视图中,布局中,甚至包含在其他元素中。元素可用于使视图更具可读性,将重复元素的呈现放在其自己的文件中。它们还可以帮助您在应用程序中重用内容片段。

因此,为了您的目的,使用元素,更多信息here