Yii2使用教程

https://www.cnblogs.com/chengbocd/p/6125533.html

https://www.yiichina.com/doc/guide/2.0/start-gii

https://www.cnblogs.com/mthp/articles/6953692.html

https://www.cnblogs.com/wangzhilei/p/6613524.html

https://www.yiichina.com/tutorial/834

安装

中文文档: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.增加字段操作,比如加一个审核。

 

原文地址:https://www.cnblogs.com/bluealine/p/9706682.html

时间: 2024-11-09 01:42:27

Yii2使用教程的相关文章

Yii2系列教程七:Behaviors And Validations

这一篇文章的开头就无需多言了,紧接着上一篇的内容和计划,这一篇我们来说说Yii2的Behavior和Validations. Behavior 首先我们来说说Behavior,在Yii2中Behavior主要是可以用于一些常用的Model字段当中,对其进行自动化操作,比如自动添加一些时间戳字段等,这样我们就不用在每一个需要保存记录的地方分别写生成时间戳的代码了,比如前面我们在Yii2系列教程五:简单的用户权限管理中的controllers/StatusController.php的actionC

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

上一篇写了一点点Yii2的数据库相关知识和强大的Gii,这一篇就如上一篇的最后所说的一样:在Yii2中实现用户的注册和登录. 你可以直接到Github下载源码,以便可以跟上进度,你也可以重头开始,一步一步按照这个教程来做.本期的用户注册和登录,我会使用一个很棒的composer package :dektrium/yii2-user,下面就开始我们的故事吧. 用户的注册和登录 在现在的Web应用中,几乎每一个应用都会需要用户注册,不管是使用的第三方还是自建的注册登录系统,我们都需要通过某些表单来

Yii2系列教程三:Database And Gii

上一篇文章我们理了一下Yii2的MVC,Forms和Layouts,这篇文章就直接按照约定来说说Yii2与数据库相关的一些事情,如果你觉得不够的话,不急,更具体的用法我会在后续的教程给出,并且这里也会介绍Yii2的代码生成工具:强大的Gii. 你可以直接到Github下载项目源码:https://github.com/JellyBool/helloYii,这样你就可以直接跟上我的进度了,每一次我写完一个教程,我都会将代码push到Github,所以,你想偷懒的话,这是一个不错的方法. 接着上一篇

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

上一篇文章讲了用户的注册,验证和登录,这一篇文章按照约定来说说Yii2之中的用户和权限控制. 你可以直接到Github下载源码,以便可以跟上进度,你也可以重头开始,一步一步按照这个教程来做. 鉴于本教材基于Yii2 Basic,所以对RBAC的详细讲解我后面再单独出文章来说说吧,这里主要是简单地说一说权限控制 上一篇文章所实现的功能还比较简单,可以发一条状态,但是不知道你注意到没有,如果是没有注册的用户也可以使用我们的应用(类似小微博)来发状态,这是不符合情理的.正确的做法是在用户没有注册,登录

Yii2系列教程:安装及Hello World

http://www.yiiframework.com/ 安装Yii2 打算从头开始,所以,连安装Yii2也稍微写一点吧.安装Yii2最好的方式就是使用composer: composer global require "fxp/composer-asset-plugin:~1.0.3" composer create-project --prefer-dist yiisoft/yii2-app-basic helloYii 等待一小段时间之后(如果等太久或直接报错,请使用VPN),在

Yii2系列教程二:MVC,Forms和Layouts

上一篇文章我们简单地实现了Yii2框架安装和Hello World,而在这一篇文章当中,我们会带着好奇之心去探索一下在Yii2中的几个重要的元素组成:MVC,Forms和Layouts. 本文的目标是创建一个小小的表单应用,就是实现一个简单的类似发微博的功能,但是我还不想牵扯到数据库那一块,因为其实数据库和表在Yii2框架之中其实还是有很多东西可以讲的,打算在下一篇的文章中会详细讲到. MVC 模型(Model)对于我个人的简单理解就是一个概念集合,在这个集合里面包含该概念集合的多种数据,比如一

Yii2系列教程六:集成编辑器

上一篇文章我们实现了简单的用户权限管理,至于更先进的RBAC,我后面会单独出一篇文章来说说.在这一篇文章当中,我主要想写的是在Yii2中集成一个编辑器,因为在我们的实际开发当中,一个简单的textarea一般都是不能满足我们的需求的,因为我们需要多种多样的文本样式如标题,表格啦,并且很多时候我们在这些文本当中还需要插入图片和视频.而这些问题目前的最好解决方案就是集成一个编辑器,鉴于大家(这里不是指程序员)都是喜欢所见即所得,所以,这里我主要是演示怎么集成所见即所得的富文本编辑器. Redacto

yii2 入门教程2-------MVC里面的M

这次讲的是Model,M在MVC的中的作用,其实就是一个处理数据及各种复杂逻辑的实现的类,或许你对这句会看的莫名其妙,所以给你看几个小例子. 首先是处理数据,说到数据,我们在弄一个网页的时候,其实可以笼统的将其分成两部分.一种是我们向顾客收集的数据,比如用户登录时,输入的用户名和密码,因为是通过form表单收集,同时也不会存入数据库,我们暂且把这种数据叫做表单数据.另一种则是从数据库取的,或者说写了个表单,在用户填完后会存入数据库的,则将其称为数据库数据. 先讲第一种,如果是以前你肯定会这样处理

yii2 实战教程之如何安装

官方文档给出了两种Yii2的安装方式.一种是通过归档文件安装,另一种则是通过composer进行安装.两种方式具体有什么不同呢?我们这里不讨论,安装完了你自然也就明白了. 相信很多小伙伴想学Yii2,但是大部分都死在了开头.所谓万事开头难,Yii2无疑更好的证实了这一点,还没开始就先给你一棒槌. 安装前准备工作 确保你的php是PHP 5.4 以上版本 确保安装了PDO PHP扩展 确保安装了相应的数据库驱动,如 pdo_mysql 通过归档文件进行安装我们先以简单地方式安装Yii2,所谓的简单