前些天实现了【微个人.大家园】的文章文类功能。现在回忆一下,是如何完成的吧。
具体的操作步骤如下:
1.在文章posts表里添加一个列,category_id。
2.在数据库中添加一个数据表,categories。
categories结构暂时包括两个字段,分别是id和category_name
3.然后要去建立一个Model去对应这个categories表。在/app/Model/下面建立文件Category.php 内容如下:
<?php
class Category extends AppModel {
public $validate = array(
'categorie_name' => array(
'rule' => 'notEmpty'
),
'id'=> array(
'rule' => 'notEmpty'
)
);
public $hasMany = 'Post'; //这里$hasMany表示每个分类模型里会包含许多文章,这样在获取一个分类模型的时候,就会同时获取对应的那些文章
}
4.有了模型,接下来我们就可以建立Category模型对应的控制器。在/app/Controller/下面建立文件CategoriesController 内容如下:
<?php
class CategoriesController extends AppController {
public $helpers = array('Html', 'Form');
public $components = array('Session'); public function index() {
return $this->Category->find('all');
//为了在博客的首页,显示出所有的分类,我们可以在视图文件中加入$categories = $this->requestAction('/categories/index');
//去获取所有的分类模型对象
} public function view($id) {
$this->Category->id = $id;
$this->set('category', $this->Category->read());
}
}
5.现在可以去建立view视图了。在/app/View/Categories/下面建立视图文件view.ctp
在这个view.ctp中循环遍历分类模型中的文章,并显示,主要代码如下:
<?php
for($i = 0; $i < $category['Category']['post_count']; $i++)
{
echo $this->Html->div('entrylistItem', $this->Html->div('entrylistPosttitle',$this->Html->link($category['Post'][$i]['title'], array('controller' => 'posts', 'action' => 'view', $category['Post'][$i]['id']),array('class' => 'entrylistItemTitle'))));
echo $this->Html->div('entrylistPostSummary',$this->Html->div('c_b_p_desc','摘要:'.utf8Substr(strip_tags($category['Post'][$i]['body']),0,250).'...'.$this->Html->link(' 阅读全文', array('controller' => 'posts', 'action' => 'view', $category['Post'][$i]['id']),array('class' => 'c_b_p_desc_readmore'))));
echo '<div class="entrylistItemPostDesc">posted @ <a title="permalink">'.$category['Post'][$i]['created'].'</a> 阮佳佳 阅读(6) | <a>评论 (0)</a>'.
$this->Html->link(' 编辑',array('controller' => 'posts', 'action' => 'edit', $category['Post'][$i]['id']),array('rel' => 'nofollow')).
'</div>';
}
?>