1、Yii框架工作流程(MVC文件后缀都是php):
models文件夹下建模型,写AR类、对应数据库相关表、定义属性标签、写验证规则、保存表之前调用的方式,用于保存非表单获取的默认数据(如添加数据的时间等,此步如不需要可省略)->controllers文件夹下建控制器、写保存表单的动作->views文件夹下建模板,动态显示视图。
2、YII中各种类
模型中添加:
use yii\base\Model;
use yii\db\ActiveRecord; //活动记录,简称AR,用于访问数据库,一个AR类关联一张数据表
use yii\web\IdentityInterface; //认证接口,登录(身份接口)
控制器中添加:
use yii\web\Controller;
use frontend\models\Test; //引入前台模型中的AR类
use yii\helpers\Url; //url助手类
use Yii; //使用这个后,在控制器动作中的\Yii::$app可以直接写成Yii::$app
use backend\models\Product; //调用后台产品模型类
use yii\data\Pagination; //分页类
use backend\models\UploadForm; //上传模型类
use yii\web\UploadedFile; //上传功能类
use yii\filters\AccessControl; //授权类
视图中添加:
use yii\helpers\Url; //url助手类,用于生成URL
use yii\widgets\ActiveForm; //借助小部件,动态生成表单(创建表单类)
use yii\widgets\LinkPager; //显示分页类
<?php
$this->title="首页"; //定义页面title名称,用于布局中
//$this->title = $info->title; //设置页面标题,同上方
//<link rel="stylesheet" type="text/css" href="css/ssss.css"/>
//$this->registerCssFile('css/ssss.css'); //添加css到布局中,布局中要有$this->head();meta标签和link标签, 需要调用此方法动态生成
//<script src="js/aa.js"></script>
//$this->registerJsFile('js/aa.js'); //加载到布局中$this->endBody()这个位置,</body>前
/*
添加关键词和简介标签
<meta name="keywords" content="">
<meta name="description" content="">
*/
//$this->registerMetaTag(['name'=>'keywords','content'=>'网站关键字']);
//$this->registerMetaTag(['name'=>'description','content'=>'简介']);
?>
3、使用布局-包含文件
public $layout = 'main'; //属性-使用布局-包含文件,不想使用布局设置false
4、视图中调用视图-相当于包含文件
<?= $this->render('/index/_leftlxwm'); ?> //视图中调用视图
5、模型中的写法
<?php
namespace frontend\models;
use yii\db\ActiveRecord;
//模型命名不用带有model和.class
class Msg extends ActiveRecord {
//设定对应表,如果此步省略, 代表表名和类名一致(表前缀,在配置中设置)
public static function tableName() {
return '{
{%msg}}'; //return 'msg';表名,如果配置里设置了表前缀,那么{
{%msg}}是给msg表加前缀的
}
//定义属性标签,固定函数
public function attributeLabels() {
return[
'title' => '留言主题',
'sex' => '性别',
'tel' => '联系电话',
'lxr' => '联系人',
'content' => '留言内容'
];
}
//验证规则,固定函数
public function rules() {
return[
[['title','sex','tel','lxr','content'],'required','message' => '{attribute}不能为空'],
['title','string','min' => 4,'max' => 30,'tooShort' => '{attribute}最小长度必须在4个字以上','tooLong' => '{attribute}最大长度必须在30个字以内'],
['tel','match','pattern' => '/^1[34578]\d{9}$/','message' => '手机格式不正确'],