YII2 基础知识

YII框架

php框架:cakephp、codeIgniter、symfony、thinkphp、zendframework、yii...

YII是一个高性能框架,代码重用发挥到极致,惰性加载框架,速度比较快。

YII框架是美籍华人"qiang“于2008年1月开始开发YII框架,他原来是Prado框架的核心开发成员之一,维护该框架超过3年,YII框架的设计思想来源于Prodo、Ruby on Rails、jQuery、Symfony、Joomla。

YII是一个基于组件、用于开发大型web应用的高性能php框架,将web编程中的可重用性发挥到机制,能显著加速开发进程。

控制器

//请求组件
$id = Yii::$app->request->get('id',0);
//响应组件
Yii::$app->response->statusCode=404;

$header = Yii::$app->response->headers;
$header->add('pragma', 'no-cache');
$header->add('pragma', 'max-age=5');
$header->remove('pragma');
//重定向
$header->add('location','http://www.baidu.com');
$this->redirect('http://www.baidu.com',302);

//以附件形式下载
$headers = Yii::$app->response->headers;
$headers->add('content-disposition','attachment;filename="download.txt"');
//文件下载快捷操作
$file = '/test.txt';
Yii::$app->response->sendFile($file);

创建自定义函数

新建/common/helper/function.php文件用于保存自定义函数。

function p($var){
  echo '<pre>';
  var_dump($var);
  echo '</pre>';
}

将前台或后台的入口文件中加载此文件即可。
/frontend/web/index.php
/backend/web/index.php

require(__DIR__ . '/../../common/helper/function.php');

控制器接收参数

//定义request请求对象
$request = Yii::$app->request;

//判断是否是get方式传递的参数
if($request->isGet){
  //获取get传入的id
  $id = $request->get('id',0);
}

//判断是否是post方式传递的参数
if($request->isPost){
  //获取post传入的username
  $username = $request->post('username');
}

//获取客户端IP地址
$ip = $request->userIp;

控制器接收参数并传递到视图

/frontend/controllers/SiteController.php

public function actionIndex(){
  $request = Yii:$app->request;
  //定义输出数据
  $data = [];
  $data['ip'] = $request->userIp;
  //向模板中输出
  return $this->renderPartial('index',$data);
}

使用compact()同时分配多个参数

public function actionIndex()
{
  $request = Yii::$app->request;
  $client['ip'] = $request->userIp;
  $client['time'] = time();

  $user['username'] = 'junchow';
  $user['age'] = 29;
  //将多个数组合并为一个关联数组
  $data = compact($client, $user);
  return $this->redirectPartical('index', $data);
}

Yii控制器中的renderPartical()和render()有何不同。

  • renderPartical() 直接输出原始页面
  • render() 使用layout布局模板

视图模板中输出变量拥有两种方式

  • <?php echo $user['username'] ?>
  • <?=$user['username']?>
    将HTML原样输出,即输出实体化符号。
<?php
use \yii\helpers\Html;
?>
<p><?=Html::encode($user['username'])?></p>

//过滤掉非法的HTML标签,例如script标签。

<?php
use \yii\helper\HtmlPurifier;
?>
<p><?=Html::process($user['username'])?></p>

视图模板

模板渲染的两种方式

//渲染父模板,输出父模板内容,将渲染的内容嵌入到父模板。
return $this->render('index',$data);

//不输出父模板内容,仅对本次渲染的局部内容进行输出。
return $this->renderPartial('index',$data);

创建自定义布局模板

1.创建控制器并自定义布局模板变量
/frontend/controllers/IndexController.php

<?php
namespace frontend\controllers;

class IndexController extends  BaseController
{
    //自定义布局模板,默认为main
    public $layout = 'index';

    public function actionIndex()
    {
         // 渲染父模板
        return $this->render('index');
    }

}

2.创建布局模板文件
/frontend/views/layouts/index.php

<p>layouts header</p>
<?=$content;?>
<p>layouts footer</p>

模板之间的相互调用

在模板文件中使用$this->render('side')调用side模板文件
/frontend/views/index/side.php

this is side area

/frontend/views/index/index.php

<p>index page content!</p>
<?=$this->render('side')?>

模型

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,820评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,648评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,324评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,714评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,724评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,328评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,897评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,804评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,345评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,431评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,561评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,238评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,928评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,417评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,528评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,983评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,573评论 2 359

推荐阅读更多精彩内容