谈下博客中如何创建Post视图

CakePHP的视图文件存储在/app/View控制器命名的文件夹内对应。(我们要创建一个文件夹命名为“文章”在这种情况下。)这篇文章格式数据转换成一个漂亮的表,视图代码看起来是这个样子的
<!-- File: /app/View/Posts/index.ctp -->

<h1>Blog posts</h1>
<table>
    <tr>
        <th>Id</th>
        <th>Title</th>
        <th>Created</th>
    </tr>

    <!-- Here is 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'],
array('controller' => 'posts', 'action' => 'view', $post['Post']['id'])); ?>
        </td>
        <td><?php echo $post['Post']['created']; ?></td>
    </tr>
    <?php endforeach; ?>
    <?php unset($post); ?>
</table>
你可能已经注意到一个对象的使用称为$ this - > Html。这是CakePHP HtmlHelper类的一个实例。CakePHP附带一组视图助手使链接、表单输出,JavaScript和AJAX提前。您可以了解更多关于如何使用它们在助手,但这里需要注意的是,链接()方法将生成一个HTML链接与给定的标题(第一个参数)和URL(第二个参数)。
在CakePHP指定url时,建议您使用数组的格式。这是更详细地解释在部分航线上。使用url数组格式允许您利用CakePHP的反向路由功能。您还可以指定应用程序的url相对于基地的形式/控制器/动作/ param1 / param2。
此时,您应该能够将浏览器指向一个链接。你应该看到你的观点,正确格式化的帖子的标题和表清单。
如果你碰巧点击一个链接我们创建的这个观点(一篇文章的标题链接到一个URL /文章/视图/ some_id),你可能是通知CakePHP的行动还没有被定义。如果你是不太了解,不管有什么不对劲,或者你确实已经定义它,在这种情况下你很卑鄙。否则,我们将创建在PostsController现在:
// File: /app/Controller/PostsController.php
class PostsController extends AppController {
    public $helpers = array('Html', 'Form');

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

    public function view($id = null) {
        if (!$id) {
            throw new NotFoundException(__('Invalid post'));
        }

        $post = $this->Post->findById($id);
        if (!$post) {
            throw new NotFoundException(__('Invalid post'));
        }
        $this->set('post', $post);
    }
}

set()调用看起来应该很熟悉。注意我们使用findById()而不是找到(所有的),因为我们只需要一个职位的信息。
请注意,我们的视图操作需要一个参数:post的ID我们想看到的。这个参数是交给行动通过请求的URL。如果一个用户请求/文章/视图/ 3,那么美元的价值“3”是通过id。
我们也做一些错误检查,以确保用户实际上是访问一个记录。如果一个用户请求/文章/视图中,我们将把一个NotFoundException,让CakePHP ErrorHandler接管。我们还执行一个类似的检查,以确保用户访问记录存在。
现在,让我们为我们的新创建的视图“视图”行动,并将其在/ app /视图/文章/ view.ctp
<!-- File: /app/View/Posts/view.ctp -->

<h1><?php echo h($post['Post']['title']); ?></h1>

<p><small>Created: <?php echo $post['Post']['created']; ?></small></p>

<p><?php echo h($post['Post']['body']); ?></p>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值