这一次我是按着教程做一个yii的blog,首先就是建立相关的数据结构,在yii的demo文件夹里有包含了blog的sql文件,我用sqldesigner制作了表结构原形,这也是个神器了,能够简洁高效的设计数据库原型,更重要的是,免费。。。navicat的data moder是个更强大的模型设计工具,不过,让我去买正版那只能,呵呵。。。
![](data:image/png;base64,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)
说实话,照着教程做的,我现在还有些字段还不明白是干嘛用的,比如user表的aslt等等。。。照着继续吧,做到下面就知道干嘛的了。
在数据库中建立完成后,接下来对应用的配置文件进行修改配置文件是yiiblog\protected\config\main.php。在50行定义了db应用组件,下面后一段注释掉了的mysql的链接配置项,我们将未注释的db注释掉,然后打开mysql链接代码并填写相关信息即可完成mysql链接配置项。
然后打开yii提供的脚手架gii,打开方式在配置文件的21行,将模块配置里的gii部分去掉注释即可。在红色框里填写一个密码,即使用gii的密码。
接下来在浏览器中访问gii模块即可,访问路径:http://localhost/yiiblog/index.php?r=gii,输入红色框中定义的密码即可进入gii模块。脚手架页面的首页显示脚手架提供如下功能:
创建控制器,创建CURD操作,创建表单,创建模型,创建模块。yii提供了两种模型:表单模型和active record。我的理解就是:表单模型是用来对表单数据进行验证等操作的。active record即活动记录正统解释是AR是ORM对象关系映射的一种实现,通俗的讲就是一个AR类对应了一张表,一个AR类的对象对应表中的一条记录,AR类中的每个成员属性对应了表中的一列。active record框架往往用来驱动MVC中的model层,这样我简单的理解为:我们使用active record来实现对数据库的各类操作。所以,对数据表的增删改查的前提是,存在一个对应的active record。由于数据库是我软肋,数据源的各种设计模式我十分难以明白,目前只能做这个浅显的理解。 首先点击model generator,会出现一个界面来选择需要映射的数据表。由于没有定义表前缀,所以需要敲出全部表名。不过gii提供了自动不全功能,会自动提示表名,也是很方便的。
由于配置文件中没有定义标签最,可以手动输入标前缀,或者直接写入配置文件。选择一张表,就tbl_user后,点击preview预览。
预览显示了即将创建的文件的位置和文件名(yii将所有php源码放置在根目录的protected下并添加了apache下的访问限制来保护源码,所以生成的文件根目录是相对protected而言的)。点击generate生成模型文件。
照此操作建立另外四张表的active record。到model目录下可以看到,新生成了五个文件,加上之前系统生成的两张表单模型,一共七个文件。
接下来为文章和评论创建相应的curd操作。gii提供了快速的curd建立方法,点击Crud Generator
我们需要根据active record来建立curd操作,所以在图中model class写入刚创建的模型。注意此处model名是区分大小写的,所以需要选择Post,因为先前生成的模型是根据驼峰命名法,类文件首字母大写。选择Post后下面controller会自动填写,然后点击预览即可。
gii会为应用程序建立如图中列出的文件,一个控制器和相关实现curd操作的视图文件。同理建立Comment相关的curd操作文件。建立完成后即可进行访问。访问的地址为:
http://localhost/yiiblog/index.php?r=post 或 http://localhost/yiiblog/index.php?r=post/index
其中r的第一个参数代表了控制器ID,即控制器文件去掉Controller后首字母小写的那个单词。r的第二个参数表示当前控制器下相对应的动作名。不填写是会使用配置文件中定义的默认动作。(同理,控制器为空则控制器为默认控制器)。
右侧定义了增加和管理文章的快捷键。点击创建文章会跳转到登陆页面。此处采用的还是自动生成的时候的设置,没有添加自定义的用户的操作。所以输入默提供的账号demo/demo或者admin/admin即可。其中demo不具备管理权限。
填写各项数据后会验证表单元素
如提示中的,作者一栏在数据库中定义为了int型,所以此处需要填写int。
同理创建commit的curd操作。
目前为止文章和评论还是完全独立的两部分,接下来需要通过程序来建立两者的虚拟关联。