程序路由模式格式为:
前端控制器:/index.php?s=模块目录&c=文件名&m=方法名&参数名=参数值 会员控制器:/index.php?s=member&app=模块目录&c=文件名&m=方法名&参数名=参数值 后台控制器:/admin.php?s=模块目录&c=文件名&m=方法名&参数名=参数值 系统API控制器(系统保留部分不允许开发):/index.php?s=api&c=文件名&m=方法名&参数名=参数值
创建好应用程序之后才能创建控制器。
如下是一个基础控制器类的例子。在CMS中,所有的控制器都继承了控制器基类。
dayrui/App/Test/Controllers/Home.php
<?php namespace Phpcmf\Controllers; class Home extends \Phpcmf\Common { public function __construct() { parent::__construct(); } public function index() { echo 'hello php7'; } }
路由访问
/index.php?s=test&c=home&m=index
自定义路由地址
开发者可以自定义路由的访问URL,配置文件根目录/config/rewrite.php(/表示根目录)
#在[]内部增加下面代码,表示/test.html指向本控制器 'test.html' => 'index.php?s=test&c=home&m=index',
非常清晰的路由映射关系。
WdCMS控制器分为三种类型:前端控制器、用户控制器Member、后台控制器Admin、系统API路由(系统保留部分不允许开发)。
1、前端控制器:浏览者访问的动作,例如网站首页等
dayrui/App/Test/Controllers/Home.php
<?php namespace Phpcmf\Controllers; class Home extends \Phpcmf\Common { public function __construct() { parent::__construct(); } public function index() { \Phpcmf\Service::V()->assign([ 'meta_title' => dr_lang('测试页面'), ]); \Phpcmf\Service::V()->display('test.html');// test.html后面视图部分会讲到 } }
访问地址:index.php?s=应用程序目录&c=控制器名称&m=方法名称
2、用户控制器:需要用户登录账号的操作,例如密码修改等
dayrui/App/Test/Controllers/Member/Home.php
<?php namespace Phpcmf\Controllers\Member; class Home extends \Phpcmf\Common { public function __construct() { parent::__construct(); } public function index() { \Phpcmf\Service::V()->assign([ 'meta_title' => $this->lang('测试页面'), ]); \Phpcmf\Service::V()->display('test.html');// test.html后面视图部分会讲到 } }
访问地址:index.php?s=member&app=应用程序目录&c=控制器名称&m=方法名称
3、后台控制器:管理员的操作
dayrui/App/Test/Controllers/Admin/Home.php
<?php namespace Phpcmf\Controllers\Admin; class Home extends \Phpcmf\Common { public function __construct() { parent::__construct(); } public function index() { \Phpcmf\Service::V()->assign([ 'meta_title' => $this->lang('测试页面'), ]); \Phpcmf\Service::V()->display('test.html');// test.html后面视图部分会讲到 } }
访问地址:admin.php?s=应用程序目录&c=控制器名称&m=方法名称
4、系统API控制器(系统保留部分不允许开发,这里不做介绍)
dayrui/Core/Controllers/Api/XXX.php
访问地址:index.php?s=api&c=XXX&m=方法名称
运用视图模板
\Phpcmf\Service::V()->assign([ 'test_var' => '这是一个变量', ]); \Phpcmf\Service::V()->display('test.html');
上面代码是将变量赋值给模板输出,那么我们输出的模板是test.html
1、前端控制器模板文件
/template/pc或mobile/default/home/应用目录/test.html
2、用户控制器模板文件
/template/pc或mobile/default/member/应用目录/test.html
3、后台控制器模板文件
/dayrui/App/应用目录/Views/test.html
4、指定任意目录作为引用模板文件
\Phpcmf\Service::V()->set_dir('/www/www2/'); \Phpcmf\Service::V()->display('test.html'); //调用模板为:/www/www2/test.html
全局调用控制器
可以在自定义函数或者类中调用控制器中的方法和变量
\Phpcmf\Service::C(); 当前的控制器对象 \Phpcmf\Service::C()->member; 当前已经登录的用户信息,数组存储