程序路由模式格式为:

前端控制器:/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; 当前已经登录的用户信息,数组存储