为什么80%的码农都做不了架构师?>>>   

为了对 Yii 有个初步认识,我们在本节讲述如何建立第一个 Yii 应用。我们将使用yiic(命令行工具)创建一个新的 Yii 应用。Gii(强大的基于web的代码生成器)为特定的任务完成自动代码生成。假定YiiRoot为 Yii 的安装目录,WebRoot 是服务器的文档根目录。 在命令行运行yiic,如下所示:

% YiiRoot/framework/yiic webapp WebRoot/testdrive

注意: 在 MacOS、Linux 或 Unix 系统中运行yiic时,你可能需要修改yiic文件的权限使它能够运行。而且必须在终端命令行中能够直接执行php命令(可在终端中使用php -v测试),如果不能的话需要将可执行的php路径置于系统路径中。此外,也可以这样运行此工具:

% cd WebRoot
% php YiiRoot/framework/yiic.php webapp testdrive

这将在 WebRoot/testdrive 目录下建立一个最基本的 Yii 应用。这个应用拥有了大多数 Yii 应用所需要的目录结构。 不用写一行代码,我们可以在浏览器中访问如下 URL 来看看我们第一个 Yii 应用:

http://hostname/testdrive/index.php

正如我们看到的,这个应用包含三个页面:首页、联系页、登录页。首页展示一些关于应用和用户登录状态的信息,联系页显示一个联系表单以便用户填写并提交他们的咨询,登录页允许用户先通过认证然后访问已授权的内容。 查看下列截图了解更多:

    

下面的树图描述了我们这个应用的目录结构:

testdrive/index.php                 Web 应用入口脚本文件index-test.php            功能测试使用的入口脚本文件assets/                   包含公开的资源文件css/                      包含 CSS 文件images/                   包含图片文件themes/                   包含应用主题protected/                包含受保护的应用文件yiic                   yiic 命令行脚本yiic.bat               Windows 下的 yiic 命令行脚本yiic.php               yiic 命令行 PHP 脚本commands/              包含自定义的 'yiic' 命令shell/              包含自定义的 'yiic shell' 命令components/            包含可重用的用户组件Controller.php      所有控制器类的基础类Identity.php        用来认证的 'Identity' 类config/                包含配置文件console.php         控制台应用配置main.php            Web 应用配置test.php            功能测试使用的配置controllers/           包含控制器的类文件SiteController.php  默认控制器的类文件data/                  包含示例数据库schema.mysql.sql    示例 MySQL 数据库schema.sqlite.sql   示例 SQLite 数据库testdrive.db        示例 SQLite 数据库文件extensions/            包含第三方扩展messages/              包含翻译过的消息models/                包含模型的类文件LoginForm.php       'login' 动作的表单模型ContactForm.php     'contact' 动作的表单模型runtime/               包含临时生成的文件tests/                 包含测试脚本views/                 包含控制器的视图和布局文件layouts/            包含布局视图文件main.php         所有视图的默认布局column1.php      使用单列页面使用的布局column2.php      使用双列的页面使用的布局site/               包含 'site' 控制器的视图文件pages/           包含 "静态" 页面about.php     "about" 页面的视图contact.php      'contact' 动作的视图error.php        'error' 动作的视图(显示外部错误)index.php        'index' 动作的视图login.php        'login' 动作的视图system/             包含系统视图文件

1. 连接到数据库

大多数 Web 应用由数据库驱动,我们的测试应用也不例外。要使用数据库,我们首先需要告诉应用如何连接它。修改应用的配置文件WebRoot/testdrive/protected/config/main.php即可,如下所示:

return array(......'components'=>array(......'db'=>array('connectionString'=>'sqlite:protected/data/source.db',),),......
);

上面的代码告诉 Yii 应用在需要时将连接到 SQLite 数据库WebRoot/testdrive/protected/data/testdrive.db。注意这个SQLite 数据库已经包含在我们创建的应用框架中。数据库只包含一个名为tbl_user的表:

CREATE TABLE tbl_user (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,username VARCHAR(128) NOT NULL,password VARCHAR(128) NOT NULL,email VARCHAR(128) NOT NULL
);

若你想要换成一个 MySQL 数据库,你需要导入文件WebRoot/testdrive/protected/data/schema.mysql.sql来建立数据库。

注意: 要使用 Yii 的数据库功能,我们需要启用 PHP 的 PDO 扩展和相应的驱动扩展。对于测试应用来说,我们需要启用php_pdo和php_pdo_sqlite扩展。

2. 实现 CRUD 操作

激动人心的时刻来了。我们想要为刚才建立的tbl_user表实现 CRUD (create, read, update 和 delete) 操作,这也是实际应用中最常见的操作。我们无需麻烦地编写实际代码,这里我们将使用Gii —— 一个强大的基于Web 的代码生成器。

配置Gii

为了使用 Gii,首先需要编辑文件WebRoot/testdrive/protected/main.php,这是已知的 应用配置 文件:

return array(......'import'=>array('application.models.*','application.components.*',),'modules'=>array('gii'=>array('class'=>'system.gii.GiiModule','password'=>'pick up a password here',),),
);

然后,访问http://hostname/testdrive/index.php?r=gii。这里我们需要输入密码,它是在我们在上面的配置中指定的。

生成 User 模型

登陆后,点击链接Model Generator。它将显示下面的模型生成页面: 

在Table Name输入框中,输入tbl_user。在Model Class 输入框中,输入 User。然后点击Preview按钮。这里将展示将要生成的新文件。现在点击Generate按钮。一个名为User.php将生成到protected/models目录中。如我们稍后描述的, User模型类允许我们以面向对象的方式来访问数据表tbl_user。

生成 CRUD 代码

在创建模型类之后,我们将生成执行 CRUD 操作的代码。我们选择 Gii 中的Crud Generator,如下所示: 

在Model Class输入框中,输入User。在Controller ID输入框中,输入user(小写格式)。现在点击Generate按钮后的 Preview按钮。CRUD 代码生成完成了。

访问 CRUD 页面

让我们看看成果,访问如下 URL:

http://hostname/testdrive/index.php?r=user

这会显示一个tbl_user表中记录的列表。 点击页面上的Create User 链接,如果没有登录的话我们将被带到登录页。登录后,我们看到一个可供我们添加新用户的表单。完成表单并点击Create按钮,如果有任何输入错误的话,一个友好的错误提示将会显示并阻止我们保存。回到用户列表页,我们应该能看到刚才添加的用户显示在列表中。 重复上述步骤以添加更多用户。注意,如果一页显示的用户条目太多,列表页会自动分页。 如果我们使用admin/admin作为管理员登录,我们可以在如下 URL 查看用户管理页:

http://hostname/testdrive/index.php?r=user/admin

这会显示一个包含用户条目的漂亮表格。我们可以点击表头的单元格来对相应的列进行排序,而且它和列表页一样会自动分页。 实现所有这些功能不要我们编写一行代码!

转载于:https://my.oschina.net/tlkt/blog/210319

Yii框架官方教程增补篇3——开始:创建第一个Yii应用相关推荐

  1. 基于c++和asio的网络编程框架asio2教程基础篇:1、基本概念和使用说明

    基于c++和asio的网络编程框架asio2教程基础篇:1.基本概念和使用说明 由于asio2没有写技术文档,因此打算写几篇文章介绍一下如何使用它,主要是针对新手. 1.asio2如何使用? asio ...

  2. AJAX框架简笔画图片教程,jquery 框架使用教程 AJAX篇

    jquery 框架使用教程 AJAX篇 更新时间:2009年10月11日 14:47:26   作者: 正好项目中准备使用thickbox,于是干脆抛弃prototype.js,看起jquery.js ...

  3. 基于c++和asio的网络编程框架asio2教程基础篇:2、各个回调函数的触发顺序和执行流程

    基于c++和asio的网络编程框架asio2教程基础篇:2.各个回调函数的触发顺序和执行流程 以tcp举例: tcp服务端流程: #include <asio2/asio2.hpp>int ...

  4. php yii框架使用教程,php中yii框架实例用法

    Yii2框架在目前而言,网络上好评不断,最主要的原因,不管是新的框架,还是回顾旧的框架,总是有一个无法代替的优点,就是做事快,在性能使用上,也是一般框架无法媲美的,在php最好用的框架评选了,永远都是 ...

  5. php的yii框架配置,php配置yii框架_PHP教程

    个人爱好,研究了下php的yii框架. 首先,研究yii框架的前提是下载php的一键安装和zend studio.. php的一键安装给出连接如下http://www.download3k.com/I ...

  6. php写火车头采集接口,的这个火车头采集接口我在火车头采集规则里已经写了采集时间的规,迅睿CMS,CodeIgniter技术文档,PHP开发文档,迅睿CMS框架官方教程...

    官方的这个火车头采集接口,我在火车头采集规则里已经写了采集时间的规则,接口这里要怎么写才能把采集到的时间入库呀?<?php $this->_module_init('news'); //  ...

  7. 网站更换服务器ip地教程,由于服务器更换IP地址,服务器不更换。需要如何操作使网站正常运行呢?,POSCMS,CodeIgniter技术文档,PHP开发文档,迅睿CMS框架官方教程...

    多文件Files 内容详情中(show.html) 模板中调用方法是:{loop $字段名 $i $c} 序号: {$i} 标题:{$c.title} 描述:{$c.description} 文件原始 ...

  8. php微信分享时好时坏,手机端微信分享前几天都是正常的今天发现分享出去就不正常了设置,迅睿CMS,CodeIgniter技术文档,PHP开发文档,迅睿CMS框架官方教程...

    手机端微信分享前几天都是正常的,今天发现分享出去就不正常了,设置的分享标题,摘要,缩略图不显示了!求指点{php \Phpcmf\Service::C()->init_file('weixin' ...

  9. PHP新闻APP,【优速软件】APP/小程序接口:全部新闻列表,POSCMS,CodeIgniter技术文档,PHP开发文档,迅睿CMS框架官方教程...

    请求地址格式: 本部分内容设定了隐藏,需要回复后才能看到,立即回复 那么,新闻模块news格式为:http://网站/index.php?s=news&c=search&auth=授权 ...

最新文章

  1. Numpy的基本操作
  2. Spring标签mvc:annotation-driven/解读
  3. ConcurrentHashMap 和 Hashtable 的区别
  4. html:(32):字体,字号,颜色
  5. response.end后抛了异常_(七)异常处理
  6. 疫情期间程序员大学生居家远程办公神器--ToDesk
  7. HDU 4255 A Famous Grid 素数+BFS
  8. jquery图片轮播插件slideBox
  9. 常用的卫星公司数据查询(包括SPOT、QuickBird、Worldview、IKONOS、GF等)
  10. 使用navicat进行mysql数据库拷贝
  11. Duang! 工商银行也要做电商?
  12. 小学五年级计算机教学论文,人教版小学五年级数学教学论文
  13. 微信小程序 - 图像加载时渐隐淡入效果(image)
  14. 长航安庆警方成功破获系列非法经营“笑气”案
  15. 九齐单片机NY8B062D 之PWM
  16. 全民创业时代,程序员这样创业获得成功!
  17. 路由器停产,360的其他硬件产品是否安好?
  18. python 大智慧股池_玩转大智慧(仅为点播行情下的股池正常出票)(图文)
  19. 身边的疾病思考,通过类比把握模糊的正确
  20. 男大十八变、邂逅真命天女……这个华为小伙的摩洛哥4年,慕了

热门文章

  1. oracle物理,Oracle物理结构概述
  2. c mysql导入数据_MySQL 数据导入
  3. BadZipfile: File is not a zip file
  4. 3DShader之阴影贴图(Shadow Mapping)
  5. 迁移学习中使用下载好的权重
  6. python查找当前路径,在Python中查找当前终端选项卡的当前目录
  7. 百度图神经网络学习——day01
  8. CPU实时人脸检测,各种朝向、侧脸都检出来
  9. 基于深度学习算法的NLP集成工具
  10. java 指定格式的date_指定格式的日期字符串转化成java.util.Date类型日期对象