创建控制器:
在Controller控制器文件夹里面新建操作方法。(记得命名规则驼峰法命名)
写好控制器后再编辑控制器里面的内容,写操作方法。
<?php namespace HomeController; use ThinkController; class MainController extends Controller //一定要写这句话代表的是继承父类的操作方法 //如果不继承父类它就不是一个操作方法。 { public function index(){ echo "访问了main控制器的index方法"; } public function mains(){ echo "main"; } //所以说一个控制器下面可以有很多个操作方法。 }
前两句话根据以往的控制器原样复制上就可以。
访问页面的时候就可以采用路径访问就可以。如下图访问
这里的操作方法只输出了一句话,如果想访问这个操作方法显示出来页面的话,需要在把echo里面的内容换成一个模板
找一个模板扔到Home文件夹里面的View文件夹下。(因为这个View文件夹里面主要放模板) 因为操作方法名叫做index,所以需要把
这个模板文件名称改成index.html。做到这一步还是不行的。控制器可以直接扔到controller控制器文件夹里面。但是模板文件index.html不能直接扔到
View视图层里面。因为一个控制器下面可以有多个操作方法,每个操作方法里面可以有一个页面。也就是每个控制器里面可以有多个操作方法,每个操作方法
在访问的时候都可以显示一个模板文件的。(比如说main控制器里面有个index页面,index控制器里面有个index页面,这样就造成重名了。)所以模板文件直接扔到
View文件夹下是不行的。
具体放模板文件的操作方法是:
在View视图层文件夹里面新建一个以控制器命名的文件夹main,再将模板文件index.php模板文件扔到刚建好的以控制器命名的文件夹里面
这样的话再访问main控制器的index的时候,它会直接过来找View文件夹里面的Main文件夹里面index.html。
所以你如果想添加模板文件的话需要去View视图层模板文件里面新建一些文件夹出来。这些文件夹对应的就是控制器名称。(这也是一种规则)
然后再在相对应的控制器里面的操作方法里面写上调用模板的内容
$this这个对象是控制器的对象。直接用$this调用display这个方法就可以显示出对应的模板文件了。
smarty模板里面display()里面给了一个参数,是页面名称,模板名称。
但是TP框架不用写这个参数了,因为TP框架遵循的是MVC模式。MVC模式里面是有约定的。所以在TP框架里面
调用模版文件$this->display();括号里面不用写模板名称。
TP里面也可以用$this->show();来显示模板文件 它等于$this->display();(建议用$this->show();)
在TP框架里面也可以使用smarty模板里面的一个方法叫做$this->assign();注册变量的方法
在index操作方法里面注册了一个变量test然后到相对应的模板文件里面显示
结果就会显示出变量的值。跟smarty模板里面的用法一样。
TP访问的方式一种是路径的方式如下图
1.路径的方式:
入口文件后面跟斜杠Home跟斜杠控制器跟斜杠操作方法
2.get方式:
也是先找到入口文件?m=Home&c=Main&a=index m是模块c是控制器a是操作方法。
后面相当于get传值所以可以叫做get模式
3.rewrite重写模式:
相对于第二个方法来说省略掉了入口文件
也就是说在浏览器上不用写入口文件了,直接写模块名,控制器名操作方法名就可以访问了。
4.兼容模式(既有路径也有get结合起来的)
找到index.php入口文件后
localhost/0306/thinkphp/index.php?s=Home/Main/index
在控制器里面的操作方法里面写个U()方法来创建一个访问路径:
前台显示的效果如下图:
生成的路径最后面会自动带着.html后缀。
U方法在生成路径的时候不仅可以生成当前控制器里边的路径,还可以生成其他控制器里边的路径。
<?php namespace HomeController; use ThinkController; class MainController extends Controller //一定要写这句话代表的是继承父类的操作方法 //如果不继承父类它就不是一个操作方法。 { public function index(){ echo U("index/index"); $this->assign("test","111"); $this->display(); } public function mains(){ echo "main"; } //所以说一个控制器下面可以有很多个操作方法。 }
在开发过程中可以在配置文件夹里面打开,convention里面没有只能自己写上。
打开这个配置后会显示如下图的效果: