1.下拉框1.1在模型中定义(不是数据库)public function getTypeOptions(){ return array( self::TYPE_BUG=>'Bug', self::TYPE_FEATURE=>'Feature', self::TYPE_TASK=>'Task', );}1.2在表单中lebel改为<?php echo $form->dropDownList($model,'type_id', $model->getTypeOptions()); ?>过滤器 relations(2个条件:innodb,外键声明)
1单元测试 需要安装phpunithttp://www.xbc.me/install-phpunit-on-xampp/2功能测试 需要安装Selenium2.1.百度浏览器下载http://selenium-release.storage.googleapis.com/2.44/selenium-server-standalone-2.44.0.jar 3.phpunit安装selenium:http://www.davidtan.org/netbeans-xampp-phpunit-selenium-all-working-at-last/如果安装失败,先ping通pear.phpunit.de => 188.94.27.25 ip 地址修改host重新定位频道3.1 win7下不能保持host:先用管理员权限打开记事本,再用记事本打开host4.转到c盘,启动服务java -jar selenium-server.jar5.开始测试% cd protected/tests/% phpunit functional/SiteTest.php6.下载PHPUnithttps://github.com/sebastianbergmann/phpunit/tree/4.0放到xampp\php\pear\PHPUnit下7.删除autoloadhttp://www.52zuo.com/web/php/yii-framework-phpunit-to-appear-phpunit_autoload-not-found.html----安装教程http://www.ibm.com/developerworks/cn/web/1209_caimin_seleniumweb/使用 Selenium 实现基于 Web 的自动化测试http://www.ibm.com/developerworks/cn/web/1209_caimin_seleniumweb/ 如何用Selenium进行Chrome自动化测试 http://blog.csdn.net/gxlujun/article/details/7535177yii官方教程http://www.yiiframework.com/doc/guide/1.0/zh_cn/database.arr#sec-1
yii shell建模型cd webroot输入yii目录\framework\yiic shell输入 model User或批量 model *输入 crud User 测试数据库Yii已经为我们指定了一个用于测试的配置文件。我们需要创建另一个数据库,它的名字叫trackstar_test。我们还需要复制当前的 trackstar_dev数据库的结构步骤:新建数据库_test->导出旧数据库->导入到新数据库 在yii中建立后台:使用gii新建模块admin在DefaultController.php中定义layout就拥有了后台皮肤和文件参考http://blog.sina.com.cn/s/blog_a345735b01010tcl.html 命令行创建模型model UserCard tbl_user_card
没看运行已存在的测试套件、 看到 编写控制台应用程序命令*:任何用户?:匿名用户@:登录用户/认证用户访问规则按照其被申明的顺序一条一条的被评估。Yii提供了2类授权管理器:CPhpAuthManager和 CDbAuthManager.phpAuthManager使用PHP脚本文件储存授权信息。CDbAuthManager使用数据库储存授权信息。
没看 使用了CDbExpression来设置新建和更新时间的值为Unix时间戳1.mysql $this->update_time = new CDbExpression('NOW()');2.php $this->createTime=$this- >updateTime=date( 'Y-m-d H:i:s', time() ); Yii的另外一个内部验证器(CCompareValidator)添加一个新输入框来强制用户确认他输入的密码。
没看 让测试进入“红色区” 到 添加问题(Issue)类型下拉选择框 生成数据来填充下拉菜单CActiveForm是一个助手类,提供了一组方法帮助我们创建一个与数据模型类关联的数据输入表单。CActiveForm::labelEx()为问题(Issue)模型的一个属性type_id生成一个HTML标签。CActiveForm类有一个dropDownList()方法,可以根据模型属性生成一个下来列表。Yii中的过滤器是指,通过配置,在一个控制器的动作被执行之前或者之后执行的一小段代码。1.一个普遍的例子就是,当我们要求执行某个特定的控制器动作之前,用户必须已经登录,那么可以写一个简单的访问过滤器在这个动作执行之前来检查这个要求。2.如果我们想要在某个动作执行后额外记录些什么,或者执行一些审核逻辑,可以编写一个简单的审计过滤器来进行这个动作之后的处理任务。
在Yii中为了采用表前缀支持,必须设置CDbConnection::tablePrefix属性为期望的表前缀。可以使用{{TableName}}做为参考表名,其中TableName就是表的名称,但不用前缀。提供足够的测试可使代码质量提高,但很显然测试应用程序中的每一行代码可能有些夸张。 一般的经验规则是,不要为外部库编写测试代码rules()方法返回的是一个规则数组,一般每一个规则格式如下所示:Array('Attribute List(属性列表)', 'Validator(验证器)', 'on'=>'Scenario List', …additional options);on这个参数指定了一个scenario(情景)列表来使用这条验证规则。scenario(情景)允许你限制验证规则应用在特定的上下文中。一种典型的例子是insert(插入)或update(更新)。例如:如果被指定为 'on'=>'insert',这将表明验证规则只适用于模型的插入情景。如果这里没有设置,该规则将适用于调用save()方法的所有情景。 三种方法可以指定validator(验证器)1.在模型类中定义验证方法public functionValidatorName($attribute,$params) { ... }2.指定一个单独的验证器类3.使用Yii框架中现有的验证器,指定预定义的验证器别名即可。
现代的软件开发中,'Agile'(敏捷)是一个经常提到名词设计(design)->编码 (code)->测试(test)->评价(evaluation),遵遁这个规则,直到每个人都很满意。先写你的测试代码并在书写过程中再编写代码以保证最佳的测试覆盖率。我们将我们的测试文件放到这个主要目录:fixtures,functional,unit。这些报告文件夹用于存储生成的代码覆盖率的报告。
一个典型Yii的Web应用程序是等待用户通过浏览器传入一个请求后,解析该请求的信息,去查找一个对应的控制器,然后调用该控制器内的操作方法。 yiic webapp democd demoyiic shellhelphelp controllercontroller message helloworld添加动态内容最简单的方法,就是在视图模板文件中嵌入PHP语句。业务逻辑与视图分离两种在PHP视图模板中生成内容的方法:1.把数据逻辑直接在视图文件中创建。2.把数据逻辑放到控制器中,然后提供给视图一个可用变量。第二个办法将业务逻辑的数据与视图分开。视图文件中的$this指的就是渲染这个视图的控制器。视图文件名不必与ActionID相同,只需要将文件的名字作为第一个参数传递给render()就可以了。调用CHtml的link方法,link方法需要一个参数是 controllerID/actionID 成对出现的字符串,另一个超连接显示的名字。应用程序页面连接在一起:1.在视图文件中添加HTML的标签以硬编码方法书写URL结构。2.使用Yii的CHtml助手,帮助你建立controllerID/actionID格式的URL地址,这样格式的结构,将始终与应用程序的配置关联,即使整个应用程序的URL地址改变了,我们也不用去修改内部的URL,从而保证了应用程序内部的链接不失效。
vxvxv
1、了解TrackStar的需求,明确所需要的功能和数据2、确定开发方式:敏捷开发,设计->编码->测试->评估3、自动化的软件测试:单元测试:单元测试是为了验证代码是否正确,功能测试是对应程序的功能是否正确4、测试驱动的开发:规定在开始写代码之前现写测试代码,遵循以下步骤: 1)开始写一个失败的测试代码 2)运行测试代码确定它是失败的 3)快速编写你的程序代码,并测试通过 4)再次运行测试代码,以确保他确实通过 5)重构代码,并测试通过5、PHPUnit 和Selenium的安装
视图好控制器是紧密联系的,视图中的$this指的是渲染这个视图的控制器一个典型的Yii的Web应用程序是等待用户通过浏览器传入一个请求后,去查找对应的控制器,但后调用控制器其的操作方法,该控制器可以调用一个特定的视图,然后将渲染后的内容返回给用户,在数据处理时,控制器也可以与模型交互来处理创建、读取、更新和删除等操作视图中的$this值得就会渲染这个视图的控制器总结:通过Yii框架创建了一个HelloWorld应用1、用yiic创建程序骨架2、将创建的项目骨架导入到Zend Studio3、创建控制器 HelloworldController4、创建视图 helloworld5、添加动态内容到控制器,并将内容显示在浏览器6、增加网站之间的超链接:CHtml::link("Hello",array('message/helloWorld'));7、后续需奥注意CHtml的使用
模型:封装业务规则,定义数据状态,数据来自于数据库或一个表单用户输入域Yii实现了两种模型,表单模型(CFormModel)和Active Record(CAtiveRecord类)模型CFormModel代表的数据类型是从HTM表单中收集输入,他封装了所有的逻辑,它能将数据存储在内存中或是在一个Active Record模型的帮助下,存入数据库Active Record是一种设计模式,用面向对象的方式访问数据库视图:是在数据模型的基础上渲染用户见面控制器:处理一个路由请求,负责获取用户的输入,业余模型交互,并指定视图的显示与更新Yii请求的流程:1、从浏览器发出一个处理请求2、传给路由(Controller)3、路由分析请求并确定下一步的处理4、路由识别控制器中特定的操纵方法5、这个操纵方法关注传入的请求数据并与模型交互和执行其他需要的业务逻辑6、这个操作方法将处理的响应数据发送给他对应的视图类7、视图确定符合预期布局设计的数据,并返回到浏览器显示AR模型 对象关系映射总结:Yii的设计理念:MVCYii构建MVC架构每部分的具体作用Yii的执行流程:Web请求周期和URL结构Yii AR模型