201411-07 Yii框架官方指南系列7——基础知识:控制器 控制器是 CController 或其子类的实例。它在当用户请求时由应用创建。当一个控制器运行时,它执行所请求的动作,动作通常会引入所必要的模型并渲染相应的视图。 动作 的最简形式,就是一个名字以 action 开头的控制器类方法。控制器通常有一个默认的动作。当用户的请求未指定要执行的动作时,默认动作将被执行。默认情况下,默认的动作名为 index。它可以通过设置 CController::defau... 继续阅读 >
201411-07 Yii框架官方指南系列8——基础知识:模型 模型是 CModel 或其子类的实例。模型用于保持数据以及与其相关的业务逻辑。模型是单独的数据对象。它可以是数据表中的一行,或者一个用户输入的表单。数据对象的每个字段对应模型中的一个属性。每个属性有一个标签(label),并且可以通过一系列规则进行验证。Yii实现了两种类型的模型:表单模型和ActiveRecord。二者均继承于相同的基类 CModel。表单模型是 CFormModel 的实例。表单模型用于保持从用户的输入获取的数... 继续阅读 >
201411-07 Yii框架官方指南系列9——基础知识:视图 视图是一个包含了主要的用户交互元素的PHP脚本.他可以包含PHP语句,但是我们建议这些语句不要去改变数据模型,且最好能够保持其单纯性(单纯作为视图)。为了实现逻辑和界面分离,大段的逻辑应该被放置于控制器或模型中,而不是视图中。视图有一个名字,当渲染(render)时,名字会被用于识别视图脚本文件。视图的名称与其视图脚本名称是一样的.例如:视图 edit的名称出自一个名为 edit.php 的脚本文件.要渲染时如,需通过传递视图的名... 继续阅读 >
201411-07 Yii框架官方指南系列10——基础知识:组件 Yii应用建立于组件之上。组件是 CComponent 或其子类的实例。使用组件主要涉及访问它的属性以及触发或处理它的时间。基类 CComponent 指定了如何定义属性和事件。1.组件属性组件的属性就像对象的公共成员变量。它是可读写的。例如:$width=$component->textWidth;//获取textWidth属性$component->enableCaching=true;//设置enableCaching属性要定义一个组件属性,我们只需在组件类中定义一个公共成员... 继续阅读 >
201411-07 Yii框架官方系列指南系列11——基础知识:模块 注意: 版本1.0.3起支持模块。模块是一个独立的软件单元,它包含 模型, 视图, 控制器 和其他支持的组件。在许多方面上,模块看起来像一个 应用。主要的区别就是模块不能单独部署,它必须存在于一个应用里。用户可以像他们访问普通应用的控制器那样访问模块中的控制器。模块在一些场景里很有用。对大型应用来说,我们可能需要把它划分为几个模块,每个模块可以单独维护和部署。一些通用的功能,例如用户管理,评论管理... 继续阅读 >
201411-07 Yii框架官方指南系列12——基础知识:路径别名与名字空间 Yii中广泛的使用了路径别名。路径别名关联于一个目录或文件的路径。它以点号语法指定,类似于广泛使用的名字空间(namespace)格式:RootAlias.path.to.target其中的 RootAlias 是某个现存目录的别名。通过使用 YiiBase::getPathOfAlias(),别名可以被翻译为其相应的路径。例如, system.web.CController 会被翻译为 yii/framework/web/CController。通过调用 YiiBase::setPathOfAlias(),我们可以定义新的根路径别... 继续阅读 >
201411-07 Yii框架官方指南系列13——基础知识:开发规范 Yii偏爱规范胜于配置。遵循规范可使你能够创建成熟的Yii应用而不需要编写、维护复杂的配置。当然了,在必要时,Yii仍然可以在几乎所有的方面通过配置实现自定义。下面我们讲解Yii编程中推荐的开发规范。为简单起见,我们假设WebRoot是Yii应用安装的目录。1.URL默认情况下,Yii识别如下格式的URL:http://hostname/index.php?r=ControllerID/ActionIDr GET变量意为 路由(route) ,它可以被Yii解析为控制器... 继续阅读 >
201411-07 Yii框架官方指南系列14——基础知识:开发流程 介绍过Yii中的基本概念之后,我们现在讲解使用Yii开发Web应用时的一般开发流程。此处的开发流程假设我们已经完成了对应用的需求分析和必要的设计分析。创建目录结构骨架。创建第一个Web应用 中讲到的 yiic工具可以快速实现此步骤。配置此 应用。这是通过修改应用配置文件实现的。此步骤可能也需要编写一些应用组件(例如用户组件)。为所管理的每个类型的数据创建一个 模型 类。 CreatingFirstYiiApplication ... 继续阅读 >
201411-07 Yii框架官方指南系列15——基础知识:最佳MVC实践 尽管模型——视图——控制器(MVC)被几乎每一个Web开发人员所熟知,但是在实际应用开发中如何合理使用MVC依然困扰着许多人。MC背后的核心思想是代码的可重用性以及逻辑与视图的分离。 在本节中,我们将会讲述在使用Yii框架的过程中如何更好的使用MVC开发应用。为了更好进行解释阐述,我们假设Web应用包含了如下的一些子应用:前端:面向终端用户的公共网站界面;后端:提供管理整个网站应用的管理功能,通常只有管理员才能访... 继续阅读 >
201411-07 Yii框架官方指南系列16——使用表单:概览 通过HTML表单收集用户数据是Web程序开发的主要工作之一。除了表单设计外,开发者还需要将现存的或默认的数据填充到表单,验证用户输入,对无效的输入显示适当的错误信息,保存输入到持久性存储器。Yii通过其MVC结构极大地简化了此工作流程。在Yii中处理表单时,通常需要以下步骤:创建用于表现所要收集数据字段的模型类。创建一个控制器动作,响应表单提交。在视图脚本中创建与控制器动作相关的表单。在后续... 继续阅读 >
201411-07 Yii框架官方指南系列17——使用表单:创建模型 在编写表单所需的HTML代码之前,我们应该先确定来自最终用户输入的数据的类型,以及这些数据应符合什么样的规则。模型类可用于记录这些信息。正如模型章节所定义的,模型是保存用户输入和验证这些输入的中心位置。取决于使用用户所输入数据的方式,我们可以创建两种类型的模型。如果用户输入被收集、使用然后丢弃,我们应该创建一个 表单模型;如果用户的输入被收集后要保存到数据库,我们应使用一个 ActiveRecord 。... 继续阅读 >
201411-07 Yii框架官方指南系列18——使用表单:创建动作 有了模型,我们就可以开始编写用于操作此模型的逻辑了。我们将此逻辑放在一个控制器的动作中。对登录表单的例子来讲,相应的代码就是:publicfunctionactionLogin(){$model=newLoginForm;if(isset($_POST['LoginForm'])){//收集用户输入的数据$model->attributes=$_POST['LoginForm'];//验证用户输入,并在判断输入正确后重定向到前一页if($model->validate())$... 继续阅读 >
201411-07 Yii框架官方指南系列19——使用表单:创建表单 编写 login 视图是很简单的,我们以一个 form 标记开始,它的action属性应该是前面讲述的 login 动作的URL。然后我们需要为 LoginForm 类中声明的属性插入标签和表单域。最后,我们插入一个可由用户点击提交此表单的提交按钮。所有这些都可以用纯HTML代码完成。Yii提供了几个助手(helper)类简化视图编写。例如,要创建一个文本输入域,我们可以调用 CHtml::textField();... 继续阅读 >
201411-07 Yii框架官方指南系列20——使用表单:批量收集表格输入 有时我们想通过批量模式收集用户输入。也就是说,用户可以为多个模型实例输入信息并将它们一次性提交。我们将此称为 表格输入(tabularinput) ,因为这些输入项通常以HTML表格的形式呈现。要使用表格输入,我们首先需要创建或填充一个模型实例数组,取决于我们是想插入还是更新数据。然后我们从 $_POST 变量中提取用户输入的数据并将其赋值到每个模型。和单模型输入稍有不同的一点就是:我们要使用 $_POST['ModelCla... 继续阅读 >
201411-07 Yii框架官方指南系列21——使用表单:使用表单生成器(CForm) 当创建HTML表单时,经常我们发现我们在写很多重复而且在不同项目中很难重用的视图代码。例如,对于每个输入框,我们需要以一个文本标签和显示可能的验证错误来关联它。为了改善这些代码的重用性,我们可以使用自版本1.1.0可用的表单生成器特征。1.基本概念Yii表单生成器使用 CForm 对象来代表描述一个HTML表单所需的内容,包括哪些数据模型关联到此表单,表单中有哪些输入框,以及如何渲染整个表单。开发者主要需要... 继续阅读 >
201411-07 Yii框架官方指南系列22——使用数据库:概览 Yii提供了强大的数据库编程支持。Yii数据访问对象(DAO)建立在PHP的数据对象(PDO)extension上,使得在一个单一的统一的接口可以访问不同的数据库管理系统(DBMS)。使用Yii的DAO开发的应用程序可以很容易地切换使用不同的数据库管理系统,而不需要修改数据访问代码。Yii的ActiveRecord(AR),实现了被广泛采用的对象关系映射(ORM)办法,进一步简化数据库编程。按照约定,一个类代表一个表,一个实例代表一行数据。YiiAR消除了大... 继续阅读 >