Yii2.0基本使用

Yii2-advanced与yii2basic的区别

  • basic 更适合新手,特别是刚刚接触 yii 的入门开发人员。
  • adavanced 随包自带两个应用:前台应用 frontend 和后台应用 backend,basic 中只有一个应用 web。advanced 将前台和后台分开,方便开发者直接基于这两个应用搭建有前后台的完整网站,并且可以为前后台分别绑定不同域名。所以,advanced 比 basic 稍微复杂一点,不适合新手,适合学过yii的

yii2-advanced

文档:

https://www.yiichina.com/doc/guide/2.0/security-passwords

看云

https://www.kancloud.cn/curder/yii/247756

官网

https://www.yiiframework.com/doc/guide/2.0/zh-cn/start-installation

安装yii2

1
2
3
4
docker-compose pull php-uc
docker-compose up -d
docker-compose exec php-uc composer --working-dir=uc upd
config --list
1
2
3
4
5
6
7
引入阿里云镜像
>docker-compose exec php-uc composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

>docker-compose exec php-uc composer --working-dir=uc -g config --list
>docker-compose exec php-uc composer --working-dir=ucl upd

查看查看所有全局配置composer config -gl

创建项目(下载框架)

1
composer create-project --prefer-dist yiisoft/yii2-app-advanced yii2-application(项目名称)

初始化

cd 到项目目录,执行git init(目录初始化)和init.bat或者init(项目初始化)初始化脚本php init

设置安装的环境,开发环境or生产环境(0-1)。//选择0->yes

开发:debug默认开启,生产(线上):debug默认关闭

RBAC初始化:

使用数据迁移命令,初始化RBAC数据库RBAC初始化:

1
2
3
4
5
6
7
打开 common\config\main.php 文件,在 components 数组中加入 authManager 组件,注意authManager的配置不要写错哦。
//authManager有PhpManager和DbManager两种方式,
//PhpManager将权限关系保存在文件里,这里使用的是DbManager方式,将权限关系保存在数据库.
"authManager" => [
"class" => 'yii\rbac\DbManager',
],
yii migrate --migrationPath=@yii/rbac/migrations/

composer require mdmsoft/yii2-admin “~2.0”

docker配置

nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
listen 80;
server_name localhost;
root /var/www/html/uc/;

location / {
root /var/www/html/uc/;
try_files $uri /frontend/web/index.php?$args;
}

location /admin {
alias /var/www/html/uc/;
rewrite ^(/admin)/$ $1 permanent;
try_files $uri /backend/web/index.php?$args;
}

location ~ \.php$ {
fastcgi_pass php-uc:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
php-yii2:
build: php
image: php
working_dir: /var/www/html/uc
expose:
- 9000
links:
- mysql
- mongo
- redis
volumes:
- ./html/yii2-application:/var/www/html/uc
- ./php-yii2/php.ini:/usr/local/etc/php/php.ini:ro
restart: unless-stopped

创建对应的yii2的php.ini

本地host添加域名yii2-application:C:\Windows\System32\drivers\etc\host

1
2
访问 http://siteroot/admin/user/signup 添加用户  注意r=user/signup
权限修改:http://siteroot/admin/admin

yii2.0框架结构

基于mvc模式开发,不需要模板引擎的

laravel框架有反向追踪的插件,yii框架没有

1
2
3
1、在phpstorm--- file--- settings  --- plugins -- 搜索Laravel Plugin --- 安装
2、安装ide-helper插件
https://blog.csdn.net/u013957017/article/details/88573529

框架目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
├── backend   后台
├── common 公共目录
├── console 控制台
├── environments 环境配置
├── frontend 前台
├── nbproject
├── tests
├── vendor 第三方程序存放处,包括yii框架本身
├── composer.json
├── composer.lock
├── init
├── init.bat
├── LICENSE.md
├── README.md
├── requirements.php
├── yii 命令行应用的入口脚本
└── yii.bat

common公共目录, 对于本高级应用的任一独立的应用而言,都是可见、可用的

1
2
3
├── config    通用的配置,这些配置将作用于前后台和命令行
├── mail 应用的前后台和命令行的与邮件相关的布局文件等
└── models 前后台和命令行都可能用到的数据模型 common中最主要的部分

frontend前台目录结构

1
2
3
4
5
6
7
8
├── assets    存放前端资源包PHP类,用于管理CSS、js等前端资源
├── config 存放本应用的配置文件
├── controllers 控制器类
├── models 数据模型类
├── runtime 用于存放缓存的目录
├── views 视图文件
├── web 应用根目录里面包含index.php
└── widgets 存放一些常用的小挂件的类文件

config:包括主配置文件 main.php 和全局参数配置文件 params.php

tests: 用于存放测试类

web: 对于Web服务器可以访问的目录。 除了这一目录,其他所有的目录不应对Web用户暴露出来,这是安全的需要。

runtime : 这个目录是要求权限为 chmod 777 ,即允许Web服务器具有完全的权限, 因为可能会涉及到写入临时文件等。 但是一个目录并未对Web用户可见。也就是说,权限给了,但是并不是Web用户可以访问到的

命令行应用的入口脚本path/to/digpage.com/yii 文件。这个文件被 init 脚本设为可执行的

控制器与视图模板

路由规则设置(rewrite)

http://www.digpage.com/index.php?r=post/view&id=100

r表示router,PostController下的 actionView 方法

可简化为http://www.digpage.com/post/view/100,需依赖于应用组件urlManager,

urlManger功能 :

1具有解析请求以便确定指派谁来处理请求

2根据路由规则生成URL

url美化:

把 URL http://www.digpage.com/index.php?r=post/view&id=100 变成 http://www.digpage.com/post/view/Route.html

  • 隐藏入口脚本可以通过 yii\web\UrlManager::showScriptName = false 来实现
  • 路由的路径化可以通过 yii\web\UrlManager::enablePrettyUrl = true 来实现
  • 参数的路径化可以通过路由规则来实现
  • 假后缀(fake suffix) .html 可以通过 yii\web\UrlManager::suffix = '.html' 来实现

参考链接: https://blog.csdn.net/DingJingMaster/article/details/89090569

路由文件写法: https://www.cnblogs.com/zeopean/p/6020328.html