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')?>