YII的 创建控制器
1: 控制器 保证 控制器名+Controller 的文件名命名方式
2: 控制器是一个类 类名与文件名保持一致 且都须要继承Controller 基础控制类
3: 命名空间 全部的控制器都在 app\controllers 的命名空间下保存
4: 方法名为 action+方法名的结构
YII 的访问
1: 访问连接 为 /web/index.php?r=hello/index&id=111
入口文件-> web/index.php
?r= 控制器名/方法名&参数=参数值
2: 请求组件的使用
注册组件 $request
= \YII::$app->request;
调用组件中的方法 $requset->get('参数名',若未接收到该参数则以此处填写值为默认值)
;
$requset->post('参数名',若未接收到该参数则以此处填写值为默认值)
;
判断请求方式
$request->isGet; 返回值为布尔类型
3:
响应组件的使用
注册组件 $response = \YII::$app->response;
调用组件的方法
$response->statusCode = '404'; //设置状态码
$response->headers->add('pragma','no-Cache'); //设置网页是否缓存
包装后的跳转方法
$this->redirect('http://www.baidu.com');
//redirect跳转方法
$response->headers->add('content-disposition','attachment;filename="a.jeg"'); // header 头加参数 文件下载功能
包装后的文件下载方法
$response->sendFile("./index.php"); // 参数,文件路径
4: session组件的使用
注册组件 $session = \YII::$app->session;
$session->isActive; //判断session 是否开启
$session->open; //开启session;
$session->set('键','值'); //设置session 值
$session->get('键'); //获取session值
$session->remove('键'); //移除session值;
$session['键'] = '值'; //ArrayAccess 接口 使session能够像数组同样操做;
unset($session['键']); //注销session值;
5: cookies 集合的使用
- use yii\web\Cookie; //声明Cookie值;
$cookies = \YII->$app->response; //注册响应组件$cookies_data = array('name'=>'user','value'=>'zhangsan'); //cookie 必须是键值对应$cookies->add(new Cookie($cookies_data)); //设置cookie值 $cookies->remove('user'); //移除cookie$cookies = \YII::$app->request->cookies; //请求组件中的cookies集合$cookies->getValue('cookie名','若不存在cookie名则返回此处值'); //获取cookie值
6: 视图的建立
1> 建立控制器, 在Views 文件夹下 建立同名文件夹 ,例如 HelloController控制器 须要在Views 下建立 Hello文件夹
2> 建立方法,为不一样的方法分配不一样的视图,,, 默认视图文件应与 方法名一致,后缀为 .php /例如 actionIndex() 方法 对应的视图文件为 index.php
3> 调用页面 $this->renderPartial('index'); // randerPartial 局部渲染 调用index.php 视图 ,无需添加 .php后缀
7: 给视图传递参数
<?phpnamespace app\controllers;use yii\web\Controller;// use YII;use yii\web\Cookie; //Cookie的命名空间class HelloController extends Controller{ public function actionIndex(){ $hello_str = "Hello God!"; $test_arr = array(1,2); //第一步 建立一个数组 $data = array(); //将须要传递给视图的数据放入数组中 $data['view_hello_str'] = $hello_str; //将数组传递给视图 $data['view_test_arr'] = $test_arr; return $this->renderPartial('index',$data); }}
在index.php 视图文件中写入代码
<h1>hello world</h1><h1><? echo $view_hello_str;?></h1> //输出结果为 Hello God!<h1><? echo $view_test_arr[0];?></h1> //输出结果为 1
8: 给视图文件传递参数之安全性
$hello_str = "Hello God!<script>alert(2);</script> "; //注入JS代码 正常状况下 js代码会被执行
在index.php 视图文件中 引用 Html工具类 对显示数据进行过滤
<?php use yii\helpers\Html; //引用Html 工具类 use yii\helpers\HtmlPurifier; //引用Html清理类 <h1><?=Html::encode($view_hello_str);?></h1> //将会显示Hello God!<script>alert(2);</script> <h1><?=HtmlPurifier::process($view_hello_str);?></h1> //将会显示 Hello God!
9: 视图之布局文件
1> 在views/layouts文件夹下 建立一个新的布局文件 ; //例如 common.php
2> 在控制器中 声明属性 public $layout = 'common' //声明使用哪一个布局文件
3> 在方法中使用 $this->render('视图文件'); //render会将视图文件中的内容存入$content变量中 传入布局文件
4> 在布局文件中使用变量<?=$content?> 输出视图文件中的内容