Yii框架:快速构建高效CRUD应用的指南
Yii是一个高性能的PHP框架,以其速度、安全性以及对Web 2.0应用的良好支持而闻名。它遵循“约定优于配置”的原则,这意味着只要遵循其规范,就能编写比其他框架少得多的代码(更少的代码意味着更少的bug)。此外,Yii还提供了许多开箱即用的便捷功能,例如脚手架、数据访问对象、主题、访问控制、缓存等等。本文将介绍使用Yii创建CRUD系统的基础知识。
关键要点
yiic
用于创建具有合适目录结构的骨架应用。Yii遵循MVC和OOP原则,URL结构为http://localhost/yiitest/index.php?r=controllerID/actionID
。控制器和要调用的方法是根据URL中的ID确定的。gii
可用于生成模型、控制器和表单,用于CRUD操作,从而快速开发CRUD系统。例如,用户可以对博客文章执行CRUD操作的简单系统可以在几分钟内开发完成。入门
假设您已经在系统上安装了Apache、PHP(5.1或更高版本)和MySQL,因此第一步是下载框架文件。访问Yii官方网站并下载最新的稳定版本(本文撰写时为1.1.13)。解压ZIP文件以获取文件夹yii-1.1.13.e9e4a0
(版本标识符可能因您下载的版本而异),将其重命名为yii
,然后将其移动到您的Web可访问根目录。在我的系统中,这是C:\\wamp\\www
,因此框架文件的路径将为C:\\wamp\\www\\yii
。在本文中,我将其称为
,以便即使您的设置不同,您也能轻松地跟随操作。接下来,我们应该检查Yii的哪些功能将受我们的系统支持。在浏览器中访问http://localhost/yii/requirements/
以查看框架的要求详细信息。由于我们将使用MySQL数据库,因此您应该启用了MYSQL PDO扩展。
我们希望快速检查Yii的要求,这就是我们将文件放在可访问目录中的原因,但建议将Yii文件保存在Web根目录之外。检查之后,您可以随意将其移动到其他位置。
继续前进
每个Web应用程序都有一个目录结构,Yii应用程序也需要在Web根目录内维护分层结构。要使用合适的目录结构创建骨架应用程序,我们可以使用Yii的命令行工具yiic
。导航到Web根目录并键入以下内容:
/framework/yiic webapp yiitest
这将创建名为yiitest
的骨架应用程序,其中包含最少必需的文件。在其中,您将找到index.php
,它用作入口脚本;它接受用户请求并决定哪个控制器应该处理该请求。Yii基于MVC和OOP原则,因此您应该熟悉这些主题。如果您不熟悉MVC,请阅读SitePoint系列文章《MVC模式和PHP》,它提供了一个很好的介绍。Yii URL看起来像http://localhost/yiitest/index.php?r=controllerID/actionID
。例如,在博客系统中,URL可能是http://localhost/yiitest/index.php?r=post/create
。post
是控制器ID,create
是操作ID。入口脚本根据ID决定要调用哪个控制器和方法。ID为post
的控制器必须命名为PostController
(ID从类名中去除后缀“Controller”并将第一个字母转换为小写)。操作ID是以类似的方式存在的控制器内方法的ID;在PostController
中,将有一个名为actionCreate()
的方法。可能有多个与控制器关联的视图,因此我们将视图文件保存在protected/views/*controllerID*
文件夹中。我们可以在上述目录中为我们的控制器创建一个名为create.php
的视图文件,然后只需编写以下代码即可将此视图呈现给用户:
public function actionCreate()
{
$this->render('create');
}
如有必要,也可以向视图传递其他数据。操作如下:
$this->render('create', array('data' => $data_item));
在视图文件中,我们可以通过$data
变量访问数据。视图还可以访问$this
,它指向呈现它的控制器实例。此外,如果您想要用户友好的URL,可以在protected/config/main.php
中取消注释以下内容:
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'/'=>'/view',
'//'=>'/',
'/'=>'/',
)
)
然后,URL将看起来像http://localhost/yiitest/controllerID/actionID
。
开发CRUD应用程序
现在您已经了解了重要的Yii约定,是时候开始使用CRUD了。在本节中,我们将开发一个简单的系统,用户可以在其中对博客文章执行CRUD操作(创建、检索、更新和删除)。
步骤1
创建MySQL数据库yiitest
,并在其中创建一个名为posts
的表。出于本文的目的,该表将只有3列:id、title和content。
CREATE TABLE posts (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100),
content TEXT
)
打开应用程序的配置文件(protected/config/main.php
)并取消注释以下内容:
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=yiitest',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
)
将testdrive
替换为我们的数据库名称,即yiitest
。显然,您还应该提供Yii连接所需的凭据。
步骤2
在Yii中,每个数据库表都应该有一个对应类型的模型类CActiveRecord
。好处是,我们不必直接处理数据库表。相反,我们可以使用与表的不同行对应的模型对象。例如,Post
类是posts
表的模型。此类的对象表示来自posts
表的一行,并具有表示列值的属性。为了快速生成模型,我们将使用Yii的基于Web的工具gii
。此工具可用于生成模型、控制器和表单,用于CRUD操作。要在项目中使用gii
,请在应用程序的配置文件中找到以下内容并取消注释它并添加密码。
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'your password to access gii',
'ipFilters'=>array('127.0.0.1','::1'),
)
然后使用以下URL访问gii
:http://localhost/yiitest/index.php?r=gii
。如果您使用的是用户友好的URL,则URL为:http://localhost/yiitest/gii
。单击“模型生成器”。gii
将询问您表名;为表名输入“posts”,为模型使用名称“Post”。然后单击“生成”以创建模型。
检查protected/models
,您将在其中找到文件Post.php
。
步骤3
现在单击“CRUD生成器”。将模型名称输入为“Post”。控制器ID将自动填充为“post”。这意味着将在PostController.php
名称下生成一个新的控制器。单击“生成”。该过程将生成控制器以及用于CRUD操作的几个视图文件。
现在您有了一个全新的CRUD应用程序!单击“立即试用”链接进行测试。要管理帖子,您需要以admin/admin
身份登录。要创建新帖子,您需要访问http://localhost/yiitest/post/create
,要更新特定帖子,只需将浏览器指向http://localhost/yiitest/post/update/postID
即可。同样,您可以列出所有帖子并删除其中一些或全部帖子。
结论
在开发Web 2.0项目方面,Yii非常强大。事实上,我们刚刚看到在短短几分钟内创建功能齐全的CRUD系统是多么容易!显然,Yii可以为您节省大量工作,因为您不必从头开始。Yii为我们提供了基础,我们可以根据需要进行扩展。
(后续的FAQ部分,由于篇幅过长,建议另行整理成单独的文档。)
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3