安装

中文文档:http://www.yiichina.com/doc/guide/2.0/start-installation

1,安装

这里我直接下载归档文件,压缩包安装了。composer各种麻烦,国情你懂得。

https://github.com/yiisoft/yii2/releases/download/2.0.2/yii-basic-app-2.0.2.tgz

Yii 2.0 需要 PHP 5.4.0 或以上版本支持。

解压至我的web目录  E:\wamp\www\ibrain\

2,配置

config/web.php 第12行

 'cookieValidationKey' => '123',//若你通过 Composer 安装,则此步骤会自动完成

config/db.php

return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=ibrain',//数据库配置
'username' => 'root',
'password' => '',
'charset' => 'utf8',
   'tablePrefix'=>'ib_',//表前缀,默认没有的,自己加上 ];

ok, 跑 http://localhost/ibrain/web/index.php

和http://localhost/ibrain/web/index.php?r=site/index?param=value 是完整路径

运行,看到 Congratulations! 界面了。

看根目录目录,没有index首页文件,如果访问http://localhost/ibrain会看到目录,如果不想改host配置,那我们可以新增一个index.php咯,指向web/index.php。

header("Location:web/index.php");die;

入门HelloWorld

为了弄清楚运行的机制,我们跑一个helloworld测试。

首先看/web/index.php

<?php

// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);//调试模式
defined('YII_ENV') or define('YII_ENV', 'dev');//前端的调试工具 require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); $config = require(__DIR__ . '/../config/web.php'); (new yii\web\Application($config))->run();//这种写法就是5.4以上才支持

执行后的默认首页,是跑到/controller/SiteController.php  下的actionIndex()去了。然后调用的/view/site/index.html

那我现在要换掉默认控制器,在/config/web.php 中添加一句  'defaultRoute' => 'index', 这样默认控制器就是/controller/IndexControllor.php的actionIndex()了。不建议修改application.php 下的public $defaultRoute = 'site'; 框架文件最好不要修改。下面是代码

<?php
namespace app\controllers;
use Yii;
use yii\web\Controller; class IndexController extends Controller
{
public function actionIndex()
{
die("Hello world!!");//访问http://localhost/ibrain/index.php?r=index/index
//return $this->render('index');// /view/Index/index.html
}
public function actionHello()
{
die("Hello world!!!!!");//http://localhost/ibrain/index.php?r=index/hello ,index.php可以省略。
} }

数据库操作

上面的例子跑起来后,我想要从mysql中取点数据出来耍耍。开头我们的数据库已经配置好了名称为ibrain的数据库。

添加一张用户表,表结构:

CREATE TABLE `ib_admin` (
`uid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`gid` int(8) NOT NULL COMMENT '用户组ID',
`username` varchar(25) NOT NULL COMMENT '账号',
`password` varchar(100) NOT NULL COMMENT '密码',
`nickname` varchar(100) DEFAULT NULL COMMENT '昵称',
`sort` int(11) DEFAULT NULL COMMENT '排序',
PRIMARY KEY (`uid`),
KEY `group` (`gid`),
KEY `usrname` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用户表';

下面要用yii来做CURD操作。

yii2没有空模型,必须实体类来映射表,这点TP的ORM我比较喜欢。

<?php
// app/models/Admin.php 声明Admin模型,对应admin表
namespace app\models;
use yii\db\ActiveRecord;
class Admin extends ActiveRecord
{ }
<?php
// app/controller/IndexController.php namespace app\controllers; use Yii;
use yii\web\Controller;
use app\models\Admin; //引入这个空间,下面才能调用静态方法
class IndexController extends Controller {
public function actionIndex() {
//db方法可以参考yii2\db\下面的很多数据库操作类,非常丰富
$res=Admin::findAll(array('gid'=>1));
var_dump($res);

    $query = Admin::find()->asArray()->all();//如果不想要取出来的数据时对象类型,可以用asArray方法转换成数组
    var_dump($query);

//插10条记录
/* for($i=20;$i<=30;$i++){
$admin=new Admin();
$admin->gid=$i;
$admin->username="admin".$i;
$admin->password="admin".$i;
$admin->nickname="findgor".$i;
$admin->sort=$i;
$admin->insert();//插入数据
} */ //修改
/*$row=Admin::findOne(array("uid"=>19));//这是对于数据对象操作
$row->username="test";
$row->update(); */ /* 删除
$row=Admin::findOne(19);
$row->delete();
*/
} }

下面就是yii的特色菜GII了,快速生成代码,开启和关闭可以在入口文件中指定  yii_env执行环境。

跑:http://localhost/ibrain/web/index.php?r=gii

可以创建很多东西,先来个模型吧,model->start

可以预览生成的文件,使用很简单。参考:http://www.yiichina.com/doc/guide/2.0/start-gii

再来生成curd:也就是增删改查的代码,会自动生成页面。非常流弊

Model Class:                app\models\Info

Search Model Class:     app\models\InfoSearch

Controller Class:       app\controllers\InfoController

View Path:                   \views\info

  好了,生成完后,我们可以访问一下,http://localhost/ibrain/web/index.php?r=info .

项目演练

很多东西是需要在做项目中才能发现的,带着问题才能更好的学习,但切记不要一遇到问题就钻牛角尖。

下面正式修改项目。首先把头部和尾部的修改一下吧。

尾部在布局文件中,\veiws\layout\main.php

<?= Yii::powered() ?> 这个在\yii2\BaseYii.php 465行 powered

登陆功能:

http://www.yiichina.com/tutorial/332

=============================

在curd生成的页面中,默认的显示往往不足以满足我们,所以下面来改动一下。

看模板文件内的数据列表。

    <p>
<?= Html::a('创建信息', ['create'], ['class' => 'btn btn-success']) ?>
</p> <?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [ 'id',
'type',
'title',
'keyword',
'content:ntext', ['class' => 'yii\grid\ActionColumn','header' => '操作', 'headerOptions' => ['width' => '100']],
], ]); ?>

1.Showing 1-5 of 39 items.  这个统计要改成中文,在基础列表视图类widget\BaseListView.php line:190

2.显示的标题要修改的话,可以在model写一个attributeLabels()方法

 public function attributeLabels()
{
return [
'id' => '编号ID',
'type' => '类型',
'title' => '标题',
'keyword' => '关键字',
'content' => '内容',
];
}

3.要改一页显示的条数,在生成的infosearch.php中添加配置

 public function search($params)
{
$query = Info::find(); $dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pagesize' => '5',//一页显示5条数据
]
]);

那么对一个单表的操作也差不多了,但是考虑后台的复杂性,往往会出现:

1.多表关联查询后的记录

2.自定义搜索字段

3.增加字段操作,比如加一个审核。

Yii2使用教程的更多相关文章

  1. Yii2系列教程七:Behaviors And Validations

    这一篇文章的开头就无需多言了,紧接着上一篇的内容和计划,这一篇我们来说说Yii2的Behavior和Validations. Behavior 首先我们来说说Behavior,在Yii2中Behavi ...

  2. yii2实战教程之新手入门指南-简单博客管理系统

    作者:白狼 出处:http://www.manks.top/document/easy_blog_manage_system.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文 ...

  3. Yii2系列教程五:简单的用户权限管理

    上一篇文章讲了用户的注册,验证和登录,这一篇文章按照约定来说说Yii2之中的用户和权限控制. 你可以直接到Github下载源码,以便可以跟上进度,你也可以重头开始,一步一步按照这个教程来做. 鉴于本教 ...

  4. Yii2系列教程四:实现用户注册,验证,登录

    上一篇写了一点点Yii2的数据库相关知识和强大的Gii,这一篇就如上一篇的最后所说的一样:在Yii2中实现用户的注册和登录. 你可以直接到Github下载源码,以便可以跟上进度,你也可以重头开始,一步 ...

  5. Yii2系列教程三:Database And Gii

    上一篇文章我们理了一下Yii2的MVC,Forms和Layouts,这篇文章就直接按照约定来说说Yii2与数据库相关的一些事情,如果你觉得不够的话,不急,更具体的用法我会在后续的教程给出,并且这里也会 ...

  6. Yii2系列教程:安装及Hello World

    http://www.yiiframework.com/ 安装Yii2 打算从头开始,所以,连安装Yii2也稍微写一点吧.安装Yii2最好的方式就是使用composer: composer globa ...

  7. yii2实战教程之第一个Yii程序

    之前考虑过要不要砍掉该章节,直接上手教你搭建简单的博客系统.出于实战基础加之自C语言的书籍出版以来,几乎所有的编程书籍都讲述了一个Hello World的例子作为开始.虽然我们仅仅是学习Yii2,但是 ...

  8. yii2 实战教程之如何安装

    作者:白狼 出处:http://www.manks.top/document/install.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则 ...

  9. yii2发送邮件教程

    作者:白狼 出处:http://www.manks.top/article/yii2_swiftMailer本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接, ...

随机推荐

  1. linux shell脚本使用结构化命令

    内容: 一.if-then命令 二.if-then-else命令 三.test命令 四.case命令 1.if-then结构化命令中最基本的类型,其格式如下: if command then comm ...

  2. php常用array函数

    http://www.w3school.com.cn/php/php_ref_array.asp 1.array_change_key_case() 把数组中所有键更改为小写或大写2.array_ch ...

  3. MVC,MVP 和 MVVM

    复杂的软件必须有清晰合理的架构,否则无法开发和维护.MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 ...

  4. Java 基础 Map 练习题

    第一题 (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队.如果该 年没有举办世界杯,则输出:没有举办世界杯. 附:世界杯冠军以及对应的夺冠年 ...

  5. [mysql]throw exception

    CREATE PROCEDURE pro_throwException (errorCode char(5), errorMessage text) BEGIN SIGNAL SQLSTATE err ...

  6. windows平台整合Apache与tomcat

    Apache与Tomcat整合的好处 Apache主要用来解析静态文本,如html.Tomcat虽然也有此功能,但Apache效率大大高于Tomcat,尤其是对于并发数较大的企业级应用,能更好的显示A ...

  7. linux块设备驱动之实例

    1.注册:向内核注册个块设备驱动,其实就是用主设备号告诉内核这个代表块设备驱动 sbull_major  =  register_blkdev(sbull_major, "sbull&quo ...

  8. RTTI: dynamic_cast typeid

    dynamic_cast:将基类类型的指针向派生类指针安全转换.多用于下行转换.上行转换时,和static_cast是一样的.C++类型转换看这里.而const_cast用来修改类型的const或vo ...

  9. 微信小程序实例

    看到小程序,那么火,自己也想动手写一个.但是没有很好的api接口.有一天看到一个开发安卓的朋友,写了一个干货集中营的小程序.就搜了一下.看到api是免费开放的.于是自己也动手写了一个. 具体的微信小程 ...

  10. ubuntu安装(owncloud-docker安装)

    1.源下载地址:http://mirrors.aliyun.com/ubuntu-releases/ ubuntu-16.04-server-amd64.iso 2.在虚拟机上安装完后 (1)查看IP ...