Yii初学
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工具类 对显示数据进行过滤
<?phpuse 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?> 输出视图文件中的内容

浙公网安备 33010602011771号