ThinkPHP基础-----第六章(控制器相关)

控制器:

一、新建控制器:application/index/controller->User.php

1、新建控制器文件首字母必须大写

2、模板:
    

访问:http://www.tp.com/index.php/Index/user/index

3、写法:
    必须声明命名空间:
    声明控制器名字,必须与文件名相同
    命名空间必须和文件对应

二、控制器加载页面

1、系统View类
    控制器:
        

    视图:
        在application/index/view/

        新建blog文件夹/

        (如果调用index控制器)新建index.html文档;

        (如果调用aaa控制器)新建aaa.html文档;


2、系统Controller类
        use think\Controller(写在控制器最上面)

        class User extends Controlle
        {
            return $this->fetch('index')
        }

3、系统方法
        //实例化系统view类
        $view=new \think\View;

        return $view->fetch('index');

三、渲染输出:
默认情况下,控制器的输出全部采用return的方式:

设置默认输出格式:config.php
    // 默认输出类型
    'default_return_type'   => 'html'

    // 默认AJAX 数据返回格式,可选json xml ...
        'default_ajax_return'    => 'json'


输出格式:
    1、json:
        设置:'default_return_type'   => 'json'

        写法:$data= ['name'=>'thinkphp','status'=>1];
            return json_encode($data) //json转字符串

    1、字符串:
        写法:return '这是一个字符串'

四、控制器初始化:
1、初始化方法:

    //初始化方法
    public function _initialize()
        {
            echo '这是初始化方法';
        }
    控制器方法:
    public function hello()
        {
            return 'hello';
        }
    调用hello输出的时候,会先加载初始化的_initialize
    的内容,再加载hello的内容 

2、使用初始化方法,必须继承系统控制器:
    namespace app\index\controller;

    use think\Controller;

    class Index extends Controller
    {
    }

只要调用控制器下的任意方法,都会先调用初始化方法

3、控制器初始化的用法:
    提取控制器下的公共的设置

    例如:登陆权限的控制

五、前置操作:

六、页面跳转:
基于系统类:
引入系统控制器
use think\Controller

    HTML:action="{:url('check')}"
    当前控制器下的check方法

    控制器接受:$_POST('name')
跳转方式:
    成功跳转:
        $this->success(提示信息,跳转地址,返回数据,跳转等待时间,header信息)           

        $this->success('跳转成功',url('index/index'))
    失败跳转: url默认返回上一个页面
        $this->error('登陆失败')

修改成功和失败的模板页面:
     // 默认跳转页面对应的模板文件
    thinkphp/tpl/dispathch_jump.tpl;


或者:
    指定成功与失败的页面

    先在配置文件中修改成功与失败的文件
// 默认跳转页面对应的模板文件
'dispatch_success_tmpl'  => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl', 改为secces.tpl
'dispatch_error_tmpl'    => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl', 改为rerror.tpl
 
    在thinkphp/tpl/新建 secces.tpl和reeor.tpl

七、重定向:
\think\library\traits\controller\jump.php;

使用:
    redirect('跳转地址','其他参数','code','隐士参数');

public function cdx(){
$this->redirect('index/index');
    }

空操作:
    主要解决一些用户恶意输入的的操作
    public function _empty(){
    $this->redirect('index/index');
 }

全网空操作重定向:
新建Error.php控制器

namespace app\indexx\controller
use think\Controller
class Error extende Controller{
    public function index(){
        $this->redirect('index/index');
}
    public function _empty(){
    $this->redirect('index/index');
}

}

网站上线,每一个控制器都必须写空操作
无论前台、后台 都需要写一个空 控制器

你可能感兴趣的:(ThinkPHP基础-----第六章(控制器相关))