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');  //设置网页是否缓存            
            $response->headers->add('Location','http://www.baidu.com');   //设置header头跳转
                        包装后的跳转方法
                        $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 集合的使用
  1. use yii\web\Cookie; //声明Cookie值;
  2. $cookies = \YII->$app->response; //注册响应组件
  3. $cookies_data = array('name'=>'user','value'=>'zhangsan'); //cookie 必须是键值对应
  4. $cookies->add(new Cookie($cookies_data)); //设置cookie值
  5. $cookies->remove('user'); //移除cookie
  6. $cookies = \YII::$app->request->cookies; //请求组件中的cookies集合
  7. $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:  给视图传递参数
            
  1. <?php
  2. namespace app\controllers;
  3. use yii\web\Controller;
  4. // use YII;
  5. use yii\web\Cookie; //Cookie的命名空间
  6. class HelloController extends Controller{
  7. public function actionIndex(){
  8. $hello_str = "Hello God!";
  9. $test_arr = array(1,2);
  10. //第一步 创建一个数组
  11. $data = array();
  12. //将需要传递给视图的数据放入数组中
  13. $data['view_hello_str'] = $hello_str;
  14. //将数组传递给视图
  15. $data['view_test_arr'] = $test_arr;
  16. return $this->renderPartial('index',$data);
  17. }
  18. }
            在index.php 视图文件中写入代码
  1. <h1>hello world</h1>
  2. <h1><? echo $view_hello_str;?></h1> //输出结果为 Hello God!
  3. <h1><? echo $view_test_arr[0];?></h1> //输出结果为 1
        8:  给视图文件传递参数之安全性
  1. $hello_str = "Hello God!<script>alert(2);</script> "; //注入JS代码 正常情况下 js代码会被执行
       在index.php 视图文件中 引用 Html工具类  对显示数据进行过滤     
  1. <?php
  2. use yii\helpers\Html; //引用Html 工具类
  3. use yii\helpers\HtmlPurifier; //引用Html清理类
  4. <h1><?=Html::encode($view_hello_str);?></h1>             //将会显示Hello God!<script>alert(2);</script>
  5. <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?>   输出视图文件中的内容

     




















                    
        




posted @ 2015-07-17 15:52  搁羽  阅读(168)  评论(0)    收藏  举报