TP框架

创建控制器:

 

在Controller控制器文件夹里面新建操作方法。(记得命名规则驼峰法命名)

写好控制器后再编辑控制器里面的内容,写操作方法。

<?php
namespace Home\Controller;
use Think\Controller;
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 Home\Controller;
use Think\Controller;
class MainController extends  Controller   //一定要写这句话代表的是继承父类的操作方法
//如果不继承父类它就不是一个操作方法。
{
    public function index(){
        
        echo U("index/index");
        
        $this->assign("test","111");
        $this->display();
    } 
    public function mains(){
        echo "main";
    }
    //所以说一个控制器下面可以有很多个操作方法。
}

 

 

 

 

在开发过程中可以在配置文件夹里面打开,convention里面没有只能自己写上。

打开这个配置后会显示如下图的效果:

 

posted @ 2017-08-22 09:15  mengqiaini  阅读(355)  评论(0编辑  收藏  举报