好了,接下来我们手摸手来写一个完整mvc结构文件。
1、前端
1.1、准备工作
伪静态操作这里就不赘述了;
设计好业务需求所需的数据库结构;
假设我们需要做一个会员投稿(Contribution);
会员投稿流程就是发布文章到指定的栏目,只是一般状态设置成不显示,然后管理员审核后将状态设置为显示;(深入的业务需求请自行涉及补充)
1.2、创建模型
文件创建路径:apps/home/model/;在该目录下新建文件:ContributionModel.php
注意细节:
1、命名空间,前面有提到,app开头,当前应用,一般前端就是home,model结尾
2、引入 Controller 基类,让ContributionModel继承Model
1.3、创建控制器
文件创建路径:apps/home/controller/;在该目录下新建文件:ContributionController.php
model = new ContributionModel();
$this->parser = new ParserController();
$this->htmldir = $this->config('tpl_html_dir') ? $this->config('tpl_html_dir') . '/' : '';
}
public function index(){
$content = parent::parser($this->htmldir . 'member/article_list.html'); // 框架标签解析
$content = $this->parser->parserBefore($content); // CMS公共标签前置解析
$content = str_replace('{pboot:pagetitle}', '我的文章列表', $content);
$content = $this->parser->parserPositionLabel($content, 0, '我的文章列表', Url::home('member/index')); // CMS当前位置标签解析
$content = $this->parser->parserSpecialPageSortLabel($content, - 4, '我的文章列表', Url::home('member/index')); // 解析分类标签
$content = $this->parser->parserAfter($content); // CMS公共标签后置解析
echo $content;
exit();
}
//其他功能自行补充,本文主要讲的是如何创建功能模块
}注意细节:
1、命名空间,前面有提到,app开头,当前应用,一般前端就是home,controller结尾
2、引入 Model 基类,让ContributionController继承Controller
3、引入上一步创建好的ContributionModel模型,在__construct中进行实例化
4、该功能仅登陆后可用,在__construct中加入登陆状态判断
5、在模板文件夹template/default/html/member/中创建article_list.html文件,该文件即为我的文章列表功能所对应的视图文件。
2、后端
后端的MVC架构基本与前端一致,只是需要注意后端路由需要手动写入。
文件地址:apps/common/route.php;打开文件,在该文件中预先写好路由配置。
官方推荐将路由写在config/route.php文件中,升级不会被覆盖。
例如:
// 商城模块
'admin/ShopCategory' => 'admin/shop.ShopCategory',
'admin/Goods' => 'admin/shop.Goods',
'admin/Order' => 'admin/shop.Order',
'admin/Payment' => 'admin/shop.Payment',我在会员模块下方增加了几个新功能的路由。
另外注意的一个细节就是,后端无需接入parser,直接显示视图文件即可。
例如:
model = new AuditModel();
}
// 审核列表
public function index()
{
//准备页面所需数据
......
//直接显示模板文件
$this->display('member/audit.html');
}
}