首先,每一个控制器的类名都要规范的写成 控制器名+Controller.class.php
系统默认的控制器是Index,对应的就是Controller/indexController.class.php
因为ThinkPHP采用单一入口模式访问应用,请求都会被定向到入口文件,系统会自动解析URL参数,确定当前请求的模块/控制器/方法,标准的URL请求模式: http://localhost/index.php/admin/index/hello
1.普通模式利用传统的GET传参的方式请求,http://localhost/?m=admin&c=index&a=hello$name=thinkphp
2.PATHINFO模式 因为过长的url请求会对搜索引擎蜘蛛不友好,所以这个模式使用了SEO优化,我们甚至可以更改url参数的连接符, 'URL_PATHINFO_DEPR' => '-';http://localhost/index.php/admin-index-hello-name-thinkphp
3.REWRITE模式在原来PATHINFO的基础上添加了重写规则,可以去掉URL地址里面的入口文件index.php,在入口文件的同级添加htaccess文件,
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
这段代码的主要作用就是利用正则表达式。自动在url请求中添加index.php.
控制器与视图
每一个控制器得方法都会在VIEW/控制器名称/方法名.html视图文件.
要输出视图就要在控制器方法里进行模板渲染操作。例如:
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function hello($name='thinkphp'){
$this->assign('name',$name);
$this->display();
}
}
这个控制器类中,对于我们从URL参数获取的$name值,$this->assign(key,value);保存然后$this->display();指定渲染的模板,若没有指定则按照规则及,view/控制器名称/方法名.html输出模板文件