控制器:
一、新建控制器:application/index/controller->User.php
1、新建控制器文件首字母必须大写
2、模板:
namespace app\index\controller;//声明命名空间
//声明控制器
class User{
public function index(){
$data=Url::build('Index/index/index');
echo $data;
}
}
?>
访问:http://www.tp.com/index.php/Index/user/index
3、写法:
必须声明命名空间:
声明控制器名字,必须与文件名相同
命名空间必须和文件对应
二、控制器加载页面
1、系统View类
控制器:
namespace app\index\controller;//声明命名空间
//声明控制器
class Blog{
//index 方法
public function index(){
return view();
}
public function aaa(){
return 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');
}
}
网站上线,每一个控制器都必须写空操作
无论前台、后台 都需要写一个空 控制器