<?php

namespace app\controllers;

use yii\web\Controller;
use app\models\DemoForm;
use app\models\Country; /**
* 该示例文件包含 cookies session request response 等
* 示例代码
* @author timeless
*/
class DemoController extends Controller { /**
* yii框架默认控制器的操作根普通的方法使用是有区别的 开头是使用action
* @access public
* @param string $message
* 当应用接收到请求并确定由 say 操作来响应请求时,应用将从请求的参数中寻找对应值传入进来
*/
public function actionSay($message = 'hello') {
// echo $message;
return $this->render('say', ['message' => $message]);
} /**
* 测试Forms
*/
public function actionEntry() {
$model = new DemoForm();
if ($model->load(\Yii::$app->request->post()) && $model->validate()) {
return $this->render('entry-confirm', ['model' => $model]);
} else {
// 无论是初始化显示还是数据验证错误
//其实数据首先由客户端 JavaScript 脚本验证,
//然后才会提交给服务器通过 PHP 验证。
//yii\widgets\ActiveForm 足够智能到把你在
//EntryForm 模型中声明的验证规则转化成
//客户端 JavaScript 脚本去执行验证。
return $this->render('entry', ['model' => $model]);
}
} /**
* 测试数据库
* db.php配置的数据库连接可以在应用中通过 Yii::$app->db 表达式访问
* config/db.php 将被包含在应用配置文件 config/web.php 中,
* 后者指定了整个应用如何初始化。请参考配置章节了解更多信息。
*/
public function actionDbmanage() {
$countries = Country::find()->orderBy('name')->all();
// print_r($countries);
var_dump($countries);
} /**
* 测试 request请求
* @access public
*/
public function actionTestrequest() {
//获取 请求信息
$request = \yii::$app->request;
echo $request->get('id', '');
var_dump($request->ispost);
var_dump($request->isget);
echo $request->UserIp;
if ($request->isAjax) { /* 该请求是一个 AJAX 请求 */
}
if ($request->isGet) { /* 请求方法是 GET */
}
if ($request->isPost) { /* 请求方法是 POST */
}
if ($request->isPut) { /* 请求方法是 PUT */
}
} /* * response 响应************************************************************************************** */ /**
* 测试 response 响应
* @access public
*/
public function actionTestresponse() {
$res = \yii::$app->response;
//如果需要指定请求失败,可抛出对应的HTTP异常,如下所示:
throw new \yii\web\NotFoundHttpException;
// yii\web\BadRequestHttpException: status code 400.
// yii\web\ConflictHttpException: status code 409.
// yii\web\ForbiddenHttpException: status code 403.
// yii\web\GoneHttpException: status code 410.
// yii\web\MethodNotAllowedHttpException: status code 405.
// yii\web\NotAcceptableHttpException: status code 406.
// yii\web\NotFoundHttpException: status code 404.
// yii\web\ServerErrorHttpException: status code 500.
// yii\web\TooManyRequestsHttpException: status code 429.
// yii\web\UnauthorizedHttpException: status code 401.
// yii\web\UnsupportedMediaTypeHttpException: status code 415.
// 如果想抛出的异常不在如上列表中,可创建一个yii\web\HttpException异常,带上状态码抛出,如下:
// throw new \yii\web\HttpException(402);
} /**
* response 响应格式化
yii\web\Response::FORMAT_HTML: 通过 yii\web\HtmlResponseFormatter 来实现.
yii\web\Response::FORMAT_XML: 通过 yii\web\XmlResponseFormatter来实现.
yii\web\Response::FORMAT_JSON: 通过 yii\web\JsonResponseFormatter来实现.
yii\web\Response::FORMAT_JSONP: 通过 yii\web\JsonResponseFormatter来实现.
* @access public
*/
PUBLIC function actionTestresponseformat() {
$response = \Yii::$app->response;
// $response->format = \yii\web\Response::FORMAT_JSON;
// return ['message' => 'hello world']; //返回json数据
// $response->format = \yii\web\Response::FORMAT_HTML;
// return 'DSADASDA'; //返回HTML数据
$response->format = \yii\web\Response::FORMAT_XML;
return ['message' => 'hello world']; //返回XML数据
} /**
* 跳转实现 响应
* @access public
*/
public function actionRedirect() {
return $this->redirect('http://example.com/new', 301);
} /**
* 文件下载
* @access public
*/
public function actionDownload() {
return \Yii::$app->response->sendFile(__DIR__ . '/../a.txt');
// yii\web\Response::sendFile(): 发送一个已存在的文件到客户端
// yii\web\Response::sendContentAsFile(): 发送一个文本字符串作为文件到客户端
// yii\web\Response::sendStreamAsFile(): 发送一个已存在的文件流作为文件到客户端
} /** 响应response************************************************* */ /** session响应************************************************* */
public function actionSessiondemo() {
$session = \yii::$app->session;
//var_dump($session->isActive);
//$session->open();
//$session->close();
//$session->destory();
// Flash数据是一种特别的session数据,它一旦在某个请求中设置后,只会在下次请求中有效,然后该数据就会自动被删除。 常用于实现只需显示给终端用户一次的信息,如用户提交一个表单后显示确认信息。
// 请求 #1
// 设置一个名为"postDeleted" flash 信息
$session->setFlash('postDeleted', 'You have successfully deleted your post.');
// 请求 #2
// 显示名为"postDeleted" flash 信息
echo $session->getFlash('postDeleted');
// 请求 #3
// $result 为 false,因为flash信息已被自动删除
$result = $session->hasFlash('postDeleted');
// 当调用yii\web\Session::setFlash()时, 会自动覆盖相同名的已存在的任何数据,
// 为将数据追加到已存在的相同名flash中,可改为调用yii\web\Session::addFlash()。 例如
// 请求 #1
// 在名称为"alerts"的flash信息增加数据
$session->addFlash('alerts', 'You have successfully deleted your post.');
$session->addFlash('alerts', 'You have successfully added a new friend.');
$session->addFlash('alerts', 'You are promoted.');
// 请求 #2
// $alerts 为名为'alerts'的flash信息,为数组格式
$alerts = $session->getFlash('alerts');
} /* * cookies操作********************************************** */ public function actionCookiesdemo() {
//写入的时候是响应 读取的时候是请求
$res_cookies = \yii::$app->response->cookies;
//键name 值 value
$res_cookies->add(new \yii\web\Cookie(['name' => 'language', 'value' => 'zhuang']));
$res_cookies->remove('language'); //或者直接 unset($_COOKIES['language'])
$req_cookies = \yii::$app->request->cookies;
echo $req_cookies->getValue('language', 'null呀');
} }

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. microsoft visual studio 不能逐句执行?

    最近在使用vs2013过程中,vs2013不能逐行执行,在不设断点的情况下,根本停不下来按一下F11,整个程序就执行完了.百度了很久也没找到方法(看的还不够仔细),卸载安装了很多次(看我够笨的吧),最 ...

  2. Redis教程02——管道(Pipelining)

    请求/响应协议和RTT Redis是一个使用客户端/服务器模型(也被称作请求/响应协议)的TCP服务器. 这说明通常来讲一个一个请求的实现有以下步骤: 客户端发送请求到服务器,并从socket中以堵塞 ...

  3. Distinct Substrings - spoj 694(不重复子串个数)

    题目大意:RT   分析:练手题目....后缀数组确实很强大.....多理解height数组, 切勿使用模版,后缀数组本身就有很多细节,多犯错更有利理解这个算法.   代码如下: ========== ...

  4. Redis的安装(Centos)(转)

    1.1. 什么是redis Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库.它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如 ...

  5. 初识phaser框架——开源的HTML5 2D游戏开发框架

    背景: 在网上看到,65行实现flappy bird,感到很好奇.原来是使用开源的2D游戏框架 phaser开发的. 什么是phaser2D游戏开发框架呢? 借鉴与网上的资料: 1.    Phase ...

  6. jQuery 实现上下,左右滑动

    前几天的任务:http://t.sina.com.cn/  的下滑效果. 渐变移动出足够的空白 -> 淡出最后一个 ->渐变移动出足够的空白 我们要做的是向左移动效果.这个效果用时需添加一 ...

  7. flipsnap--手机屏幕水平滑动框架

    在很多手机应用中,大家都会见过这样一种效果:当手指横向滑动屏幕时,屏幕上的页面会向左或向右滑动. 下面介绍一下当用HTML5+CSS3开发手机应用时解决这类效果的一款js框架:flipsnap. fl ...

  8. LINQ多条件OR模糊查询

    本文章转载:http://www.cnblogs.com/guyun/archive/2012/10/18/2729888.html 需求是这样的,有一张表tbl(Key[int],Value[str ...

  9. x264 编码器选项分析 (x264 Codec Strong and Weak Points) 1

    文章文件夹: x264 编码器选项分析 (x264 Codec Strong and Weak Points) 1 x264 编码器选项分析 (x264 Codec Strong and Weak P ...

  10. libcurl使用演示样例

    简要说明:C++使用libcurl訪问"www.baidu.com".获取返回码和打印出http文件 /* * @ libcurl使用演示样例 * @ 2014.04.29 * @ ...