1. <?php
  2.  
  3. namespace app\controllers;
  4.  
  5. use yii\web\Controller;
  6. use app\models\DemoForm;
  7. use app\models\Country;
  8.  
  9. /**
  10. * 该示例文件包含 cookies session request response 等
  11. * 示例代码
  12. * @author timeless
  13. */
  14. class DemoController extends Controller {
  15.  
  16. /**
  17. * yii框架默认控制器的操作根普通的方法使用是有区别的 开头是使用action
  18. * @access public
  19. * @param string $message
  20. * 当应用接收到请求并确定由 say 操作来响应请求时,应用将从请求的参数中寻找对应值传入进来
  21. */
  22. public function actionSay($message = 'hello') {
  23. // echo $message;
  24. return $this->render('say', ['message' => $message]);
  25. }
  26.  
  27. /**
  28. * 测试Forms
  29. */
  30. public function actionEntry() {
  31. $model = new DemoForm();
  32. if ($model->load(\Yii::$app->request->post()) && $model->validate()) {
  33. return $this->render('entry-confirm', ['model' => $model]);
  34. } else {
  35. // 无论是初始化显示还是数据验证错误
  36. //其实数据首先由客户端 JavaScript 脚本验证,
  37. //然后才会提交给服务器通过 PHP 验证。
  38. //yii\widgets\ActiveForm 足够智能到把你在
  39. //EntryForm 模型中声明的验证规则转化成
  40. //客户端 JavaScript 脚本去执行验证。
  41. return $this->render('entry', ['model' => $model]);
  42. }
  43. }
  44.  
  45. /**
  46. * 测试数据库
  47. * db.php配置的数据库连接可以在应用中通过 Yii::$app->db 表达式访问
  48. * config/db.php 将被包含在应用配置文件 config/web.php 中,
  49. * 后者指定了整个应用如何初始化。请参考配置章节了解更多信息。
  50. */
  51. public function actionDbmanage() {
  52. $countries = Country::find()->orderBy('name')->all();
  53. // print_r($countries);
  54. var_dump($countries);
  55. }
  56.  
  57. /**
  58. * 测试 request请求
  59. * @access public
  60. */
  61. public function actionTestrequest() {
  62. //获取 请求信息
  63. $request = \yii::$app->request;
  64. echo $request->get('id', '');
  65. var_dump($request->ispost);
  66. var_dump($request->isget);
  67. echo $request->UserIp;
  68. if ($request->isAjax) { /* 该请求是一个 AJAX 请求 */
  69. }
  70. if ($request->isGet) { /* 请求方法是 GET */
  71. }
  72. if ($request->isPost) { /* 请求方法是 POST */
  73. }
  74. if ($request->isPut) { /* 请求方法是 PUT */
  75. }
  76. }
  77.  
  78. /* * response 响应************************************************************************************** */
  79.  
  80. /**
  81. * 测试 response 响应
  82. * @access public
  83. */
  84. public function actionTestresponse() {
  85. $res = \yii::$app->response;
  86. //如果需要指定请求失败,可抛出对应的HTTP异常,如下所示:
  87. throw new \yii\web\NotFoundHttpException;
  88. // yii\web\BadRequestHttpException: status code 400.
  89. // yii\web\ConflictHttpException: status code 409.
  90. // yii\web\ForbiddenHttpException: status code 403.
  91. // yii\web\GoneHttpException: status code 410.
  92. // yii\web\MethodNotAllowedHttpException: status code 405.
  93. // yii\web\NotAcceptableHttpException: status code 406.
  94. // yii\web\NotFoundHttpException: status code 404.
  95. // yii\web\ServerErrorHttpException: status code 500.
  96. // yii\web\TooManyRequestsHttpException: status code 429.
  97. // yii\web\UnauthorizedHttpException: status code 401.
  98. // yii\web\UnsupportedMediaTypeHttpException: status code 415.
  99. // 如果想抛出的异常不在如上列表中,可创建一个yii\web\HttpException异常,带上状态码抛出,如下:
  100. // throw new \yii\web\HttpException(402);
  101. }
  102.  
  103. /**
  104. * response 响应格式化
  105. yii\web\Response::FORMAT_HTML: 通过 yii\web\HtmlResponseFormatter 来实现.
  106. yii\web\Response::FORMAT_XML: 通过 yii\web\XmlResponseFormatter来实现.
  107. yii\web\Response::FORMAT_JSON: 通过 yii\web\JsonResponseFormatter来实现.
  108. yii\web\Response::FORMAT_JSONP: 通过 yii\web\JsonResponseFormatter来实现.
  109. * @access public
  110. */
  111. PUBLIC function actionTestresponseformat() {
  112. $response = \Yii::$app->response;
  113. // $response->format = \yii\web\Response::FORMAT_JSON;
  114. // return ['message' => 'hello world']; //返回json数据
  115. // $response->format = \yii\web\Response::FORMAT_HTML;
  116. // return 'DSADASDA'; //返回HTML数据
  117. $response->format = \yii\web\Response::FORMAT_XML;
  118. return ['message' => 'hello world']; //返回XML数据
  119. }
  120.  
  121. /**
  122. * 跳转实现 响应
  123. * @access public
  124. */
  125. public function actionRedirect() {
  126. return $this->redirect('http://example.com/new', 301);
  127. }
  128.  
  129. /**
  130. * 文件下载
  131. * @access public
  132. */
  133. public function actionDownload() {
  134. return \Yii::$app->response->sendFile(__DIR__ . '/../a.txt');
  135. // yii\web\Response::sendFile(): 发送一个已存在的文件到客户端
  136. // yii\web\Response::sendContentAsFile(): 发送一个文本字符串作为文件到客户端
  137. // yii\web\Response::sendStreamAsFile(): 发送一个已存在的文件流作为文件到客户端
  138. }
  139.  
  140. /** 响应response************************************************* */
  141.  
  142. /** session响应************************************************* */
  143. public function actionSessiondemo() {
  144. $session = \yii::$app->session;
  145. //var_dump($session->isActive);
  146. //$session->open();
  147. //$session->close();
  148. //$session->destory();
  149. // Flash数据是一种特别的session数据,它一旦在某个请求中设置后,只会在下次请求中有效,然后该数据就会自动被删除。 常用于实现只需显示给终端用户一次的信息,如用户提交一个表单后显示确认信息。
  150. // 请求 #1
  151. // 设置一个名为"postDeleted" flash 信息
  152. $session->setFlash('postDeleted', 'You have successfully deleted your post.');
  153. // 请求 #2
  154. // 显示名为"postDeleted" flash 信息
  155. echo $session->getFlash('postDeleted');
  156. // 请求 #3
  157. // $result 为 false,因为flash信息已被自动删除
  158. $result = $session->hasFlash('postDeleted');
  159. // 当调用yii\web\Session::setFlash()时, 会自动覆盖相同名的已存在的任何数据,
  160. // 为将数据追加到已存在的相同名flash中,可改为调用yii\web\Session::addFlash()。 例如
  161. // 请求 #1
  162. // 在名称为"alerts"的flash信息增加数据
  163. $session->addFlash('alerts', 'You have successfully deleted your post.');
  164. $session->addFlash('alerts', 'You have successfully added a new friend.');
  165. $session->addFlash('alerts', 'You are promoted.');
  166. // 请求 #2
  167. // $alerts 为名为'alerts'的flash信息,为数组格式
  168. $alerts = $session->getFlash('alerts');
  169. }
  170.  
  171. /* * cookies操作********************************************** */
  172.  
  173. public function actionCookiesdemo() {
  174. //写入的时候是响应 读取的时候是请求
  175. $res_cookies = \yii::$app->response->cookies;
  176. //键name 值 value
  177. $res_cookies->add(new \yii\web\Cookie(['name' => 'language', 'value' => 'zhuang']));
  178. $res_cookies->remove('language'); //或者直接 unset($_COOKIES['language'])
  179. $req_cookies = \yii::$app->request->cookies;
  180. echo $req_cookies->getValue('language', 'null呀');
  181. }
  182.  
  183. }

yii框架基本操作的更多相关文章

  1. yii框架安装心得

    最近在学习yii框架, 现在将遇到的一些问题和解决方法写出来与大家分享. yii框架的安装: 下载yii框架之后, 打开文件运行init.bat文件, 如果闪退就打开php的扩展(php_openss ...

  2. Yii框架 400 错误

    YII  400错误 在YII框架中400错误是csrf校验失败的意思 csrf是什么? CSRF(Cross-site request forgery跨站请求伪造,也被称为"One Cli ...

  3. Yii框架CURD方法

    在YII框架中,CURD有2种方式: 1.AR模式:2. DAO模式 AR模式下 查全部   MODEL  $model->find()->asArray()->all()查单 个  ...

  4. Yaf(Yet Another Framework)用户手册 yii框架手册

    地址:http://www.laruence.com/manual/ yaf框架手册:http://pan.baidu.com/s/1bnHFPHd yii框架手册:http://pan.baidu. ...

  5. yii框架的理解

    Yii Framework是一个基于组件.用于开发大型 Web 应用的高性能 PHP 框架.Yii提供了今日Web 2.0应用开发所需要的几乎一切功能.Yii是最有效率的PHP框架之一. yii框架里 ...

  6. 使用Yii框架完整搭建网站流程入门

    下载地址: http://www.yiiframework.com/ http://www.yiichina.com/ 由美籍华人薛强研究而出, Yii 这个名字(读作易(Yee))代表 简单(eas ...

  7. Yii框架(Yii Framework)部署

    一.下载Yii 在部署yii框架之前首先要搭建好php环境,这里就不说搭建环境的问题了(这里已经部署好wampserver了),环境搭建好后,到yii官方网站下载yii framework:http: ...

  8. 使用 OAuth2-Server-php 在 Yii 框架上搭建 OAuth2 Server

    原文转自 http://www.cnblogs.com/ldms/p/4565547.html Yii 有很多 extension 可以使用,在查看了 Yii 官网上提供的与 OAuth 相关的扩展后 ...

  9. 三级联动(在YII框架中)

    //三级联动 //数据库代码过多就不上传了 //视图 <div class="area">    <table class="table"&g ...

随机推荐

  1. QT静态链接

    想把QT的程序链接成一个独立的EXE以方便使用,查了很多资料都需要自行编译QT. 搜索了很多的资料,发篇写得比较简明一些:http://my.oschina.net/weiweiqiao/blog/2 ...

  2. [基础] Loss function(一)

    Loss function = Loss term(误差项) + Regularization term(正则项),我们先来研究误差项:首先,所谓误差项,当然是误差的越少越好,由于不存在负误差,所以为 ...

  3. [2013 ACM/ICPC Asia Regional Nanjing Online C][hdu 4750]Count The Pairs(kruskal + 二分)

    http://acm.hdu.edu.cn/showproblem.php?pid=4750 题意: 定义f(u,v)为u到v每条路径上的最大边的最小值..现在有一些询问..问f(u,v)>=t ...

  4. 使用Calendar获取近三年的财务信息

    1.

  5. dede 如何去除[field:title/]里面出现的b标签

    调用[field:title/]标签,两边加<b>怎么去掉<b> 怎么回事??? 最近更新dede的版本后,调用[field:title/]标签,生成的标题两边会自动在标题两边 ...

  6. thinkphp 获取客户端ip地址方法

    /** * 获取客户端IP地址 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字 * @param boolean $adv 是否进行高级模式获取(有 ...

  7. Python基础知识--列表和集合

    列表:有序性,可以存放任意类型的对象,通过索引访问,可以分片操作 >>> L = ['id', 1000, 'scd', 1000, 'scd'] >>> L [' ...

  8. windows下安装pip

    1.在安装pip前,请确认win系统中已经安装好了python,和easy_install工具,如果系统安装成功,easy_install在目录C:\Python27\Scripts 下面,确认截图如 ...

  9. [转]Android中dp,px,sp概念梳理以及如何做到屏幕适配

    http://blog.csdn.net/jiangwei0910410003/article/details/40509571 今天又开始我的App开发,因为之前一直做的是SDK,所以涉及到界面UI ...

  10. 史上最简单的带流控功能的http server

    s.py import time import SimpleHTTPServer import SocketServer BYTES_PER_SECOND=160*1024 class MyHTTPR ...