您好,欢迎访问三七文档
【Yii框架学习】介绍、安装部署框架、商城模板与yii结合、MVC历史:2008年1月到现在Php框架:cakephpCI(codeIgniter)symfonyTP(thinkphp)zendframework(官方)Yii等等,还有许多叫不上名字的框架。Yii:高性能框架、代码重用性发挥到了极致、惰性加载框架、速度非常快缓存、登录组件、助手(小物件,灵活创建表单,常见html代码)、日志组件等等。适合开发大型web应用系统开发者:xueqiang(美国华人)版本情况:(2008年-----2009年)1.0.0-----1.0.12(2010年-----现在)1.1.0------1.1.13【yii框架部署】我们需要创建自己的应用系统Cms内容管理系统Shop商城系统Office办公系统Crm客户关系管理系统开始访问我们的应用系统。【yii在什么地方用的多】框架:dedecmsecshopcrmDedecms是内容管理系统的框架Ecshop是做商城网站的框架Crm是做客户关系管理系统的框架以上3个框架都是“专门”针对具体领域的框架,这样的框架不灵活,死板。Yii框架是通用的框架,一般适合客户需求比较灵活、比较花样多,比较复杂的地方。Yii框架设计模式是主流MVC。Yii框架是一个纯OOP面向对象框架。【商城模板与Yii框架结合】Yii访问需要走路由,设置好路由就会找到对应的控制器和方法路由:=site/indexController控制器view视图Model模型MVC设计模式将样式、图片、js静态资源集成到系统里边Css样式:/assets/default/css/图片:/assets/default/imgJs:/assets/js/静态资源目录统一放入系统常量里边,方便调用。/protected/config/constants.php用户登录模板与Yii框架整合:1.创建UserController控制器2.创建视图views/user/login.php3.控制器调用视图$this-renderPatial();4.引入css和图片,将样式目录与图片目录放入常量,统一调用。【路由】在框架里边我们通过路由获得控制器和方法我们有了控制器的方法,就可以进一步与视图或模型进行交互http://网址/index.php?r=控制器/方法【商城其他页面与Yii结合】Netbeans生成时间快捷键:Ctrl+j今晚主要任务:商城前台模板与Yii结合1,Yii框架部署起来(根据自己情况搭建虚拟主机,也可以使用localhost)2,控制器和视图理解好控制器:UserController(名字Controller)方法:actionLogin(action名字)Views/下边有许多目录,目录原则是:每个控制器名字在views下都有对应名字的目录存在,里边存放具体模板文件3.理解好常量文件constant.php(样式目录和图片目录定义)4.商城网站与Yii框架结合制作出效果(首页、登录、注册、商品列表、商品详细)控制器调用视图模板引入样式和图片自定义控制器:【昨天内容回顾】我们又学习控制器和视图父类Controller在哪了?答:这个父类我们没有显示包含进程序里边,比如include、requre之类包含指令那么这个父类控制器Controller我们在什么地方给包含进来的?答:在Yii应用的主配置文件里边main.php,间接通过引入compoments组件目录进来的那么主配置文件main.php在什么地方引入到我们的应用里边的呢?答:在统一入口处index.php控制器----》父类控制器----》compoments---main.php----index.php1.在前台通过“布局”展示模板样式2.学习使用自动代码生成工具gii,通过gii创建后台模块3.在后台将模板展示出来4.根据情况引入数据库【yii布局实现】布局文件已经实现出来,下面我们需要使用这个布局文件我们系统默认的布局文件是colum1.php使用布局文件:布局文件具体与什么有关系:控制器渲染视图renderPartial()此方法不会渲染布局render()这个方法会渲染布局。下边我要做什么事情?把公共的头部提取出来现在我们布局已经做好了:1.制作布局文件layouts/文件名字,使用$content代表普遍模板内容。2.设置布局文件,在父类控制器里边public$layout=//layouts/shop;3.调用布局文件,在控制器方法里边使用方法render()就会调用布局文件。【商城后台部署】一般网站都会有“前台”和“后台”前台:给一般普通用户来使用后台:是给公司维护人员来使用,例如我们给网站添加商品、修改商品等操作是通过后台来处理的。同学们思考:如何创建后台后台有自己的控制器和视图我们程序的架构是部署在Yii上边。Yii自己有一个模块机制,可以帮组我们实现后台的搭建模块:有自己独立的控制器、独立的视图、独立的模型,其不可以单独部署。我们创建模块:gii(自动代码生成工具)gii在Yii里半是以模块形式存在。在main.php配置文件里边打开gii模块,以便使用。gii模块如何来访问:通过路由形式访问该模块=模块名字=gii路由会判断当前的名字,是模块定位到模块,否则定位控制器现在我们要生成一个后台模块我们给后台起一个名字“houtai”现在我们后台模块已经创建成功,要想使用,必须在main.php引入该模块现在我们访问后台模块=houtai后台默认模板文件D:\如上图,后台显示的时候为什么会显示前台的布局内容,是Yii代码重用性的体现,我们可以自定义后台布局进行显示,后边讲解。【后台模板效果展示】在后台有用户登录功能通过控制器和视图展示登录页面我们操作后台与操作前台是完全一样的行为习惯,不同的是我们访问后台:=模块/控制器/方法后台在访问的时候,路由需要加上模块的名字。前台访问:=控制器/方法【模块】:在Yii里边,就是独立形成的MVC设计模式的代码的集合体,也是有一定功能代码的集成,这个功能类似前台功能,前台有控制器、视图、模型,模块也有控制器、视图、模型。前台可以实现的功能,模块都可以实现。【实现后台其他页面效果】我们后台整体架构使用html里边的框架标签frameset后台整体实现:使用了frameset标签将头部、左侧、右侧三种结合到一起形成了html框架布局,是“品”字型布局。头部frame左侧菜单部分frame主体内容部分frame整体是frameset头部、左侧、主体都是单独的页面,有独立的控制器和方法来访问【后台商品列表页面部署】控制器goods视图上图right的结合,在单击超链接的时候,连接内容会跑到frame对应的名字里边,name=”right”target=”_blank”//新窗口展示链接内容target=”self”//本窗口展示链接内容target=”名字”//这个名字与frame里边的名字一致,那么链接内容会跑到这个frame里边。总结:1.前台视图文件的布局效果实现2.我们使用自动代码生成工具gii生成了后台模块3.后台视图页面实现(登录、frameset主体框架页面、商品操作)明天会学习数据库操作作业:1.利用gii将后台模块创建出来2.后台的登录、主体frameset框架页面、商品添加修改展示页面实现出来3.布局效果根据个人情况具体实现。前两天学习Yii框架前台的控制器和视图制作出来(模板与Yii框架结合)视图模板关于布局layout使用后台部署,gii生成后台模块后台登录、商品展示、主体frameset框架部署起来模块:让前台和后台的代码在物理上分隔来开当我们有相对独立的业务需求,都可以通过模块来解决。【数据库操作】MVC框架C:controller控制器V:view视图M:model模型操作数据库步骤:1)建立数据库php0507、建立数据表、写入测试数据2)通过Yii框架连接数据库main.php3)注意:数据库内部处理走PDO,因此需要让php开启PDO扩展。php.ini4)测试Yii框架是否有链接上数据库在控制器里边随便一个地方输出信息:var_dump(Yii::app()-db);红色文字意思是获得数据库组件Yii::app():Yii框架是纯OOP面向对象框架,每次web请求,相当于通过创建一个类的对象,让对象调用相关方法执行。对象是我们框架应用的核心对象,我们也可以通过代码获得这个应用对象(Yii::app())。以上信息出现说明数据库有连接成功。【使用数据库】现在我们可以对数据库进行增、删、改、查操作MVC,现在我们需要制作model来操作数据库创建model模型goods我们来看看“db”到底是谁?main.phpYii框架核心代码大约有10000行,有一个文件将全部核心代码整理了。D:\【使用数据模型goods】利用模型查询数据表的数据,在后台实现商品信息的查询模型:有多少数据表,就建立多少模型模型其实就是类我们对数据库进行操作,需要实例化模型类,产生对象通过对象调用相关的方法,就可以实现数据库的操作CActiveRecord:是活跃记录,AR,好多成熟框架都有此技术。将数据表的相关内容以“类”的形式呈现出来。我们学习AR技术。让页面底部产生日志信息:获得全部商品信息findAll()结果是一个大的数组,里边有具体对象元素我们可以遍历这个大的数组。遍历出来的结果是具体每条记录的对象记录对象产生了,就可以利用对象调用自己的属性(商品名称、价格、数量等等)获得具体信息find()会产生一条记录信息,其会返回一个直接对象出来我们可以通过对象调用自己的属性直接获得具体商品信息对象-属性;findAll()返回了一个数组,里边有好多对象元素信息find()直接返回了一个对象,可以通过对象获得具体商品信息。【数据信息展现到视图模板里边】通过模型获得商品信息展现到页面上1.通过模型获得具体商品信息2.将商品信息传递到视图模板里边renderPartial(’视图’,被传递变量信息)3.在视图里边获得具体商品信息展示。【通过具体sql语句获得信息】AR:findAllBysql();数据模型:原则上一个数据表对应一个模型模型本质上说就是一个类,我们对数据库操作需要通过这个类实现,进而需要实例化这个类,产生对象对象可以调用类里边的相关方法,进而对数据库进行操作AR:CActiveRecord,活跃记录,就是模型,就是类model【通过模型model实现数据的添加】我们操作数据库,需要通过模型创建对象来操作对象调用相关的方法,实现数据的操作当我们创建一个对象,这个对象就代表数据表里边的一条记录。数据表的字段,就是我们创建模型对象的属性如何添加数据呢我们把模型对象的属性信息设置好,就可以实现数据的添加。【利用页面表单实现数据添加】利用助手进行表单展现助手:利用php程序来生成html代码。Yii里边称助手是“小物件”widget通过widget小物件创建添加商品的表单首先处理视图:其次控制器需要把当前模型对象传递到视图里边,以供表单使用再次数据模型需要有一个方法提供汉字名字统一显示?phpecho$form-labelEx($goods_model,'go
本文标题:Yii框架笔记
链接地址:https://www.777doc.com/doc-1907052 .html