Yii2框架
一、Yii2框架
1、什么是Yii2易框架
就是用PHP语言开发的框架
PHP框架区别和常见问题
1)常用PHP框架
C语言开发
2)常见问题
问:你觉得XXX框架是轻量级还是重量级?
答:框架帮你做的事越多,框架越重。(其次:设计是否复杂? 运行速度? 更接近原生?)
问:一般设计框架的时候都需要权衡?
答:开发效率和运行效率(yaf、Phalcon)。
下载并安装
︴网址
官网:http://www.yiiframework.com
︴下载
︴使用
- 步骤1:解压到指定目录中
- 步骤2:初始化,通过命令【php init】
- 步骤3:访问
三、目录介绍
四、控制器
http://l.com/yii2/frontend/web/index.php?r=test/index
路由
路由访问规则
域名/index.php?r=控制器名/方法名
<?php
namespace frontend\controllers;
use Yii;
use yii\web\Controller;
/**
* 测试控制器
*/
class TestController extends Controller
{
/**
* Displays homepage.
*
* @return mixed
*/
public function actionIndex()
{
echo 66666;die;
return $this->render(‘index’);
}
public function actionAdd()
{
echo 7777777777;die;
}
}
脚下留心:方法前缀必须是action开头
美化路由(自定义路由)
六、视图
1、语法
加载视图并传递数据(数组中的键后期在视图中直接当变量使用)
return $this->render(‘index’, [
‘test1’ => 111,
‘test2’ => ‘dsfsdfa’,
‘test3’ => array(‘name’, 666, ‘aaa’)
]);
模板显示数据通过<?= $变量名 ?> (注:<?= 相当于 <?php echo )
2、练习
七、模型
1、准备
- 模型使用手册:http://blog.csdn.net/ww_smile7/article/details/53410166
- 设置数据库配置文件
- 定义模型
<?php
namespace common\models;
use Yii;
use yii\db\ActiveRecord;
/**
* Login form
*/
class Php12 extends ActiveRecord
{
}
2、练习
查询所有
查询一条
插入
八、留言板案例
︴效果
︴代码
准备
- 创建表
create table msg (
id int primary key auto_increment comment ‘编号’,
title varchar(60) not null comment ‘标题’,
`desc` text comment ‘描述’,
created_at int default 0 comment ‘创建于’,
updated_at int default 0 comment ‘更新于’
)engine=myisam charset=utf8;
- 创建模型
<?php
namespace common\models;
use Yii;
use yii\db\ActiveRecord;
/**
* Login form
*/
class Msg extends ActiveRecord
{
}
列表功能
- 步骤1:定义路由
- 步骤2:创建控制器方法、查询所有留言数据并传递给视图
<?php
namespace frontend\controllers;
use Yii;
use common\models\Msg;
use yii\web\Controller;
/**
* 测试控制器
*/
class MsgController extends Controller
{
//说明laravel框架有layout模板机制
//声明属性决定layout是否使用
//当前控制器都生效
public $layout = false;
public function actionIndex()
{
//1.查询数据通过模型
$msgs = Msg::find()->all();
//2.加载视图并传递数据
return $this->render(‘index’, [
‘msgs’ => $msgs
]);
}
}
- 步骤3:创建视图
- 步骤4:循环显示数据
<!DOCTYPE html>
<html>
<head>
<meta charset=”utf-8″>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<meta content=”telephone=no, address=no” name=”format-detection”>
<meta content=”width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no” name=”viewport”>
<title>微留言演示案例</title>
<link rel=”stylesheet” type=”text/css” href=”./message/msg.css” media=”all” />
</head>
<body id=”message” onselectstart=”return true;” ondragstart=”return false;”>
<div class=”container”>
<div class=”qiandaobanner”>
<a href=”./message”>
<img src=”./message/wall.jpg” style=”width:100%;” />
</a>
</div>
<div class=”cardexplain”>
<div class=”window” id=”windowcenter”>
<div id=”title” class=”wtitle”>操作提示<span class=”close” id=”alertclose”></span></div>
<div class=”content”>
<div id=”txt”></div>
</div>
</div>
<div class=”history”>
<div class=”history-date”>
<ul>
<?php foreach ($msgs as $msg) : ?>
<li class=”green bounceInDown”>
<h3>
<img src=”./message/logo100x100.jpg”>
<?= $msg->title ?>
<span><?= date(‘Y-m-d’, $msg->created_at) ?></span>
<div class=”clr”></div>
</h3>
<dl>
<dt class=”hfinfo”><?= $msg->desc ?></dt>
</dl>
</li>
<?php endforeach; ?>
<li class=”green bounceInDown nob ly2″ style=”display:none;”>
<form action=”” method=”post” class=”form1″>
<dl>
<dt>
<input name=”uname” type=”text” class=”px” id=”uname” value=”” placeholder=”请输入您的昵称”>
</dt>
<dt>
<textarea name=”content” class=”pxtextarea” style=” height:60px;” id=”content” placeholder=”请输入留言内容”></textarea>
</dt>
<dt>
<a class=”submit” href=”javascript:void(0);”>提交留言</a>
</dt>
</dl>
</form>
</li>
<a><h2 class=”first first2″ style=”position: relative;”>点击留言</h2></a>
</ul>
</div>
</div>
</div>
</div>
<script type=”text/javascript” src=”./message/jquery.js”></script>
<script type=”text/javascript”>
$(function(){
//留言表单显示切换
$(“.first1”).click(function(){
$(“.ly1”).slideToggle();
});
$(“.first2”).click(function(){
$(“.ly2”).slideToggle();
});
//点击提交留言a标签,则提交表单
$(‘.submit’).click(function(){
//判断用户名和密码不能为空
var uname = $(‘#uname’).val();
var content = $(‘#content’).val();
if (uname == ” || content == ”) {
alert(‘请输入昵称或留言内容’);
return;
}
//提交表单
$(‘.form1’).submit();
});
});
</script>
</body>
</html>
添加功能
- 定义路由处理添加数据
- 创建控制器方法处理数据
<?php
namespace frontend\controllers;
use Yii;
use common\models\Msg;
use yii\web\Controller;
/**
* 测试控制器
*/
class MsgController extends Controller
{
//说明laravel框架有layout模板机制
//声明属性决定layout是否使用
//当前控制器都生效
public $layout = false;
//关闭cstf验证
public $enableCsrfValidation = false;
//添加
public function actionCreate()
{
//1.判断是否post提交
if (Yii::$app->request->isPost) {
//2.接受数据
$title = Yii::$app->request->post(‘uname’);
$desc = Yii::$app->request->post(‘content’);
//3.实例化对象并保存数据
$msg = new Msg;
$msg->title = $title;
$msg->desc = $desc;
$msg->created_at = time();
$msg->updated_at = time();
$rs = $msg->save();
return $this->redirect([‘/msg’]);
}
}
//列表
public function actionIndex()
{
//1.查询数据通过模型
$msgs = Msg::find()->all();
//2.加载视图并传递数据
return $this->render(‘index’, [
‘msgs’ => $msgs
]);
}
}
多学一招:
Yii::$app->request->isPost
Yii::$app->request->post(键)