欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

开源PHP开发框架Yii全方位教程 [推荐] 建立第一个 Yii 应用2

shiping1 的头像
为了对 Yii 有个初步认识,我们在本节讲述如何建立第一个 Yii 应用。我们将使用强大的 yiic 工具,它用来自动生成各种代码。为方便起见,我们假定 YiiRoot 为 Yii 的安装目录, WebRoot 为 WEB 服务器的的目录

在命令行运行 yiic,如下所示:

% YiiRoot/framework/yiic webapp WebRoot/testdrive

注意: 在 MacOS、Linux 或 Unix 系统中运行 yiic 时,你可能需要修改 yiic 文件的权限使它能够运行。此外,也可以这样运行此工具:

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


这将在 WebRoot/testdrive 目录下建立一个最基本的 Yii 应用,许多Yii 应用都有着和这个应用相同的目录结构

不用写一行代码,我们可以在浏览器中访问如下 URL 来看看我们第一个 Yii 应用:

http://hostname/testdrive/index.php

正如我们看到的,这个应用包含四个页面:首页、关于我们、联系我们、登录。联系我们显示了一个表单,以让用户输入并提交给网站管理员,登录页面允许用户先通过认证然后访问已授权的内容。查看下列截图了解更多:











下面的树图为我们描述了这个应用的目录结构。请查看Conventions以获取该结构的详细解释。
  1. testdrive/
  2.    index.php                 Web 应用入口脚本文件
  3.    assets/                   包含公开的资源文件
  4.    css/                      包含 CSS 文件
  5.    images/                   包含图片文件
  6.    themes/                   包含应用主题
  7.    protected/                包含受保护的应用文件
  8.       yiic                   yiic 命令行脚本
  9.       yiic.bat               Windows 下的 yiic 命令行脚本
  10.       commands/              包含自定义的 'yiic' 命令
  11.          shell/              包含自定义的 'yiic shell' 命令
  12.       components/            包含可重用的用户组件
  13.          MainMenu.php        'MainMenu' 挂件类
  14.          Identity.php        用来认证的 'Identity' 类
  15.          views/              包含挂件的视图文件
  16.             mainMenu.php     'MainMenu' 挂件的视图文件
  17.       config/                包含配置文件
  18.          console.php         控制台应用配置
  19.          main.php            Web 应用配置
  20.       controllers/           包含控制器的类文件
  21.          SiteController.php  默认控制器的类文件
  22.       extensions/            包含第三方扩展
  23.       messages/              包含翻译过的消息
  24.       models/                包含模型的类文件
  25.          LoginForm.php       'login' 动作的表单模型
  26.          ContactForm.php     'contact' 动作的表单模型
  27.       runtime/               包含临时生成的文件
  28.       views/                 包含控制器的视图和布局文件
  29.          layouts/            包含布局视图文件
  30.             main.php         所有视图的默认布局
  31.          site/               包含 'site' 控制器的视图文件
  32.             contact.php      'contact' 动作的视图
  33.             index.php        'index' 动作的视图
  34.             login.php        'login' 动作的视图
  35.          system/             包含系统视图文件
  36.  
复制代码
连接到数据库

大多数 Web 应用都需要数据库支持,我们的测试应用也不例外。要使用数据库,我们首先需要告诉应用如何连接它。修改应用的配置文件 WebRoot/testdrive/protected/config/main.php 即可,如下所示:
  1. return array(
  2.     ......
  3.     'components'=>array(
  4.         ......
  5.         'db'=>array(
  6.             'connectionString'=>'sqlite:protected/data/testdrive.db',
  7.         ),
  8.     ),
  9.     ......
  10. );
复制代码
上面的代码告诉 Yii 应用在需要时将连接到 SQLite 数据库 WebRoot/testdrive/protected/data/testdrive.db 。注意这个SQLite 数据库已经包含在我们创建的应用框架中。数据库只包含一个名为tbl_user的表:
  1. CREATE TABLE tbl_user (
  2.     id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  3.     username VARCHAR(128) NOT NULL,
  4.     password VARCHAR(128) NOT NULL,
  5.     email VARCHAR(128) NOT NULL
  6. );
  7.  
复制代码
若你想要换成一个 MySQL 数据库,你需要导入文件 WebRoot/testdrive/protected/data/schema.mysql.sql 来建立数据库。

    注意: 要使用 Yii 的数据库功能,我们需要启用 PHP 的 PDO 扩展和相应驱动的PDO扩展(To use Yii's database feature, we need to enable PHP PDO extension and the driver-specific PDO extension.)。对于测试应用来说,我们需要启用 php_pdo 和 php_pdo_sqlite 扩展。

实现 CRUD 操作

激动人心的时刻来了。我们想要为刚才建立的 User 表实现 CRUD (create, read, update 和 delete) 操作,这也是实际应用中最常见的操作。我们使用 yiic 工具来帮助我们生成需要的代码,而不再去写一些繁琐的代码,这个过程通常称为“脚手架”。

打开一个命令窗口,执行如下命令

% cd WebRoot/testdrive
% protected/yiic shell
Yii Interactive Tool v1.1
Please type 'help' for help. Type 'exit' to quit.
>> model User tbl_user
   generate models/User.php
   generate fixtures/tbl_user.php
   generate unit/UserTest.php
The following model classes are successfully generated:
    User
If you have a 'db' database connection, you can test these models now with:
    $model=User::model()->find();
    print_r($model);
>> crud User
   generate UserController.php
   generate UserTest.php
   mkdir D:/testdrive/protected/views/user
   generate create.php
   generate update.php
   generate index.php
   generate view.php
   generate admin.php
   generate _form.php
   generate _view.php
Crud 'user' has been successfully created. You may access it via:
http://hostname/path/to/index.php?r=user


如上所示,我们使用 yiic 的 shell 命令来和我们刚才建立的应用进行交互。在提示符后面,我们执行了两个子命令model User tbl_user 和 crud User。前一个命令为tbl_user表生成了名字为User的模型类,后一个命令分析User数据模型,产生代码来实现相关的CRUD操作。

    注意:或许你会看到类似"...could not find driver"的错误,尽管需求检查显示你已经启用了PDO扩展和相关的PDO驱动,如果这样,你可以尝试如下执行yiic 工具

% php -c path/to/php.ini protected/yiic.php shell

path/to/php.ini 代表正确的 PHP ini 文件地址

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

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

会显示一个 tbl_user 表中记录的列表。因为我们的表是空的,现在什么都没显示。

点击页面上的 Create User 链接,如果没有登录的话我们将被带到登录页。(demo/demo) 登录后,我们看到一个可供我们添加新用户的表单。完成表单并点击 Create 按钮,如果有任何输入错误的话,一个友好的错误提示将会显示并阻止我们保存。回到用户列表页,我们应该能看到刚才添加的用户显示在列表中。

重复上述步骤以添加更多用户。注意,如果一页显示的用户条目太多,列表页会自动分页。

如果我们使用 admin/admin 作为管理员登录,我们可以在如下 URL 查看用户管理页:

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

这会显示一个包含用户条目的漂亮表格。我们可以点击表头的单元格来对相应的列进行排序,而且它和列表页一样会自动分页。

实现所有这些功能不要我们编写一行代码! 


来自 http://club.topsage.com/thread-2272088-1-1.html
普通分类: