YII2快速学习笔记

工作中需要用到YII框架,于是乎,系统的学习下这套框架,详细教程请看考该站完整系列:YII2教程

一、YII简介

1、什么是YII

Yii 是一个高性能,基于组件的 PHP 框架,用于快速开发现代 Web 应用程序。

clipboard.png

2、YII优点

  • 和其他 PHP 框架类似,Yii 实现了 MVC(Model-View-Controller)设计模式并基于该模式组织代码。

  • Yii 的代码简洁优雅,这是 Yii 的编程哲学。它永远不会为了要迎合某个设计模式而对代码进行过度的设计。

  • Yii 是一个全栈框架,提供了大量久经考验,开箱即用的特性,例如:对关系型和 NoSQL 数据库都提供了查询生成器(QueryBuilders)和 ActiveRecord;RESTful API 的开发支持;多层缓存支持,等等。

  • Yii 非常易于扩展。你可以自定义或替换几乎任何一处核心代码。你还会受益于它坚实可靠的扩展架构,使用、再开发或再发布扩展。

  • 高性能始终是 Yii 的首要目标之一。

3.Yii 版本

Yii 当前有两个主要版本:1.1 和 2.0。 1.1 版是上代的老版本,现在处于维护状态。2.0 版是一个完全重写的版本,采用了最新的技术和协议,包括依赖包管理器(Composer)、PHP 代码规范(PSR)、命名空间、Traits(特质)等等。 2.0 版代表了最新一代框架,是未来几年中我们的主要开发版本。所以,我们学习2.0版本。

二、安装YII2

1.使用composer安装

什么是Composer? 由于墙的原因,会下载很慢,所以,这里我们使用Composer中国镜像

启用本镜像服务,系统全局配置: 即将配置信息添加到 Composer 的全局配置文件 config.json 中。

composer config -g repo.packagist composer https://packagist.phpcomposer.com

2.第二步

php composer.phar global require "fxp/composer-asset-plugin:~1.1.1"

如果你的Composer是全局安装的,那么就不需要输入php composer.phar,只需要用composer命令即可。

composer global require "fxp/composer-asset-plugin:~1.1.1"

安装这个玩意儿,不然你会发现新增加好的项目中没有vendor目录

3.下载yii

php composer.phar create-project --prefer-dist yiisoft/yii2-app-advanced advanced

全局安装方法:

composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced

前最好有github账号,需要授权拉取的,不然。。。。

clipboard.png

坑爹啊,还需要Github授权-_-!!!

clipboard.png

输入这个链接,在浏览器中打开,需要登录到自己的Github账户:

https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+kaiyideMacBook-Pro.local+2016-12-31+0302

clipboard.png
获取到Token授权之后,复制粘贴到这里:

Head to https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+kaiyideMacBook-Pro.local+2016-12-31+0311
to retrieve a token. It will be stored in "/Users/kaiyiwang/.composer/auth.json" for future use by Composer.
Token (hidden):(注意这里是从Github获取到的授权Token)
Token stored successfully.
Reading bower.json of bower-asset/jquery.inputmask (3.2.5)

4.下载好YII后,初始化操作

如果你是类linux系统,切换到advanced目录执行php init命令进行初始化,如果你是windows系统,请双击advanced目录下的init.bat文件

php init

5.服务器配置

5.1 更改hosts文件内容
127.0.0.1 www.demo.com
127.0.0.1 admin.demo.com
5.2 更改apache服务器设置

(更改完成后需要重启Apache服务器)

更改apache下conf/extra/httpd-vhosts.conf

 <VirtualHost *:80>     
      DocumentRoot "位置\advanced\frontend\web"     
      ServerName www.demo.com     
      ServerAlias www.demo.com  
  </VirtualHost>  
  
  <VirtualHost *:80>     
      DocumentRoot "位置\advanced\backend\web"     
      ServerName admin.demo.com     
      ServerAlias admin.demo.com  
  </VirtualHost>

配置完成后打开浏览器,输入配置的本地域名:www.yii.dev访问,成功了^_^

clipboard.png

如果跳转到apache服务器,还需要将apache

httpd-conf中Include conf/extra/httpd-vhosts.conf

前面的#注释去掉,重启apache服务器即可

安装小结:
1、通过官网或Composer下载Yii
2、解压后拷贝advanced目录放到web可访问目录,文件名advanced,不做改动

3、如果你是类linux系统,切换到advanced目录执行php init命令进行初始化,如果你是windows系统,请双击advanced目录下的init.bat文件

4、接下来会让我们选择开发环境 0开发环境 1生产环境 这里我们选择0 开发环境,输入后回车,会让我们输入yes或者no进行确认,这里我们输入yes确认即可

5、ok了之后,你仍然需要做得是切换到根目录下,执行命令composer install

6、验证下是否安装成功了,这个时候你可以在浏览器地址栏输入http://localhost/advanced/fro...看效果了,界面上显示一个大大的Congratulations即代表安装成功!

更多详情请参考该博文:yii2入门-安装 Yii2

三、第一个程序-Hello,world

先来看几个重要的文件夹:

// 1.视图文件夹:
frontend\views\

// 2.控制器
frontend\controllers\

// 3.Model层
frontend\model\

再来看一段程序TestController.php

namespace frontend\controllers; 
use yii\web\Controller; 
class TestController extends Controller 
{ 
    public function actionIndex () 
    { 
       return $this->render('index');
    } 
    public function actionCreate () { 
    } 
} 

创建模板:frontend/views/test/index.php

<?php
/**
 * Created by PhpStorm.
 * User: kaiyiwang
 * Date: 16/12/31
 * Time: 17:22
 */
?>

<div class="test-index">
    <h1>Hello World!</h1>
</div>

Yii2语法规定:声明的控制器必须带上Controller后缀,同时操作必须带上前缀action!

yii2中操作名(action)遵循驼峰式命名,也就是说如果你是多个单词,请保证你的命名规则是actionCreateArticle而不是actionCreatearticle!当然,这只是一种规范,你不这样做也没人拦你。需要提醒注意的是多个单词驼峰式命名,访问操作的时候,多个单词需要像create-article这样用连接符连接而不是createArticle哦

访问第一个测试文件前的配置:

  1. 首先我们先配置下域名yii.dev指向frontendweb目录,我们后文所指的该域名均指向这里。

  2. 在frontendcontrollers目录下新建TestController.php文件,内容参考上面我们创建Test控制器的代码。

地址栏输入http://www.yii.dev/index.php?...访问看看结果

clipboard.png

如果需要传递参数,则是这样:
http://www.yii.dev/index.php?...

public  function actionIndex($name)
    {
        return $this->render('index', [
            'name' => $name,
        ]);

    }

修改模板:

<div class="test-index">
    <h1>Hello <?= yii\helpers\Html::encode($name) ?>!</h1>
</div>

使用迁移命令migration出现了这样的问题:

clipboard.png

➜  advanced yii migrate/create create_blog_table
zsh: command not found: yii
➜  advanced

什么原因呢???

原来Mac下的迁移命令是php yii

➜  advanced php yii migrate/create create_blog_table
Yii Migration Tool (based on Yii v2.0.10)

clipboard.png

祸不单行,使用gii Module Gnenrator又出现了这样了问题,郁闷啊。。。

clipboard.png

找了许多答案,终于找到了两个靠谱的解决方案:

快速解决方法;把Yii根目录下的/common/config/mail-local.php 文件中的localhost改成127.0.0.1
根本问题解决方法;windows不会出现这种问题,mac容易出现这种问题,是因为mac里面本来就有一个PHP了,如果还用XAMPP的话,这个时候就有两个PHP,但如果不经过配置,命令行方式的PHP默认执行的是系统自带的,所以要修改默认执行的PHP
修改方法: 找到Yii根目录下的/yii文件打开,
第一行#!/usr/bin/env php 改成 #!/usr/bin/env /Applications/XAMPP/xamppfiles/bin/php
然后重启服务器再试试:)

这里我们使用第一种简单的方法,改下配置文件,/common/config/mail-local.php,将localhost改为127.0.0.1.

<?php
return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            // 'dsn' => 'mysql:host=localhost;dbname=yii',
            'dsn' => 'mysql:host=127.0.0.1;dbname=yii',
            'username' => 'root',
            'password' => '518666',
            'charset' => 'utf8',
        ],
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'viewPath' => '@common/mail',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => true,
        ],
    ],
];

OK,再次访问,问题解决:

clipboard.png

migration迁移文件步骤

1.使用php yii migrate命令生成博客 blog 对应的数据表迁移:

// 1.使用php yii migrate命令生成博客 blog 对应的数据表迁移:
php yii migrate/create create_blog_table

2.生成的迁移文件中添加字段

// 2. advanced\console\migrations 目录,可能你已经注意到了,yii migrate 命令已经在迁移文件中为我们添加了主键ID和表名,接下来我们要编辑该文件修改表名以及添加更多的列到数据表blog:
  $this->createTable('blog', [
            'id' => $this->primaryKey(),
            'title' => $this->string(100)->notNull()->defaultValue(''),
            'content' => $this->text(),
            'create_time' => $this->datetime(),
        ]);
        

3.迁移文件生成表字段

./yii migrate

参考文章:
yii2实战式教程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值