Yii2使用教程

安装

中文文档: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/findgor/p/4087125.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Yii 2.0 权威指南 本教程的发布遵循 Yii 文档使用许可. 版权所有 2014 (c) Yii Software LLC. 介绍 已定稿 关于 Yii 已定稿 从 Yii 1.1 升级 入门 已定稿 安装 Yii 已定稿 运行应用 已定稿 第一次问候 已定稿 使用 Forms 已定稿 玩转 Databases 已定稿 用 Gii 生成代码 已定稿 更上一层楼 应用结构 已定稿 结构概述 已定稿 入口脚本 已定稿 应用 已定稿 应用组件 已定稿 控制器(Controller) 已定稿 视图(View) 已定稿 模型(Model) 已定稿 过滤器 已定稿 小部件(Widget) 已定稿 模块(Module) 已定稿 前端资源(Asset) 已定稿 扩展(extensions) 请求处理 已定稿 运行概述 已定稿 引导(Bootstrapping) 已定稿 路由(Route)引导与创建 URL 已定稿 请求(Request) 已定稿 响应(Response) 已定稿 Sessions(会话)和 Cookies 已定稿 错误处理 已定稿 日志 关键概念 已定稿 组件(Component) 已定稿 属性(Property) 已定稿 事件(Event) 已定稿 行为(Behavior) 已定稿 配置(Configurations) 已定稿 类自动加载(Autoloading) 已定稿 别名(Alias) 已定稿 服务定位器(Service Locator) 已定稿 依赖注入容器(DI Container) 配合数据库工作 编撰中 数据访问对象(DAO) - 数据库连接、基本查询、事务和模式操作 编撰中 查询生成器(Query Builder) - 使用简单抽象层查询数据库 编撰中 活动记录(Active Record) - 活动记录对象关系映射(ORM),检索和操作记录、定义关联关系 编撰中 数据库迁移(Migration) - 在团体开发中对你的数据库使用版本控制 待定中 Sphinx 待定中 Redis 待定中 MongoDB 待定中 ElasticSearch 接收用户数据 编撰中 创建表单 已定稿 输入验证 编撰中 文件上传 待定中 多模型同时输入 显示数据 编撰中 格式化输出数据 待定中 分页(Pagination) 待定中 排序(Sorting) 编撰中 数据提供器 编撰中 数据小部件 编撰中 主题 安全 编撰中 认证(Authentication) 编撰中 授权(Authorization) 编撰中 处理密码 待定中 客户端认证 待定中 安全领域的最佳实践 缓存 已定稿 概述 已定稿 数据缓存 已定稿 片段缓存 已定稿 分页缓存 已定稿 HTTP 缓存 RESTful Web 服务 已定稿 快速入门 已定稿 资源 已定稿 路由 已定稿 格式化响应 已定稿 授权验证 已定稿 速率限制 已定稿 版本化 已定稿 错误处理 已定稿 测试

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值