总结:
前台搭建(controllers views model)
前台布局使用layouts
数据库使用
创建数据库
在main.php里边配置db数据库组件
制作数据模型model (goods),每个数据模型里边最基本的两个方法tableName 、static model()
模型使用(创建对象、对象调用相关方法CactiveRecord)
【Yii框架部署】
//将php.exe,引入环境变量中,搭建脚手架
//cd 到framework中,yiic webapp ../shop
//ide框架 引入,包括 framework shop的所有文件。
【完成前端业务流程】
//controllers控制器与 views 视图创建
通过“路由”访问控制器:
http://网址域名/index.php?r=控制器/方法
利用控制器操作视图views
外部模板与Yii框架views视图结合
//复制html代码到views下边
//Config 目录中设置constant.php 路径常量 (关于css和图片的)
// shop/index.php ,在同一入口引入路径常量
//views目录各文件,css样式和图片的路径,查找替换为常量
//css样式文件,修改图片对应的路径地址,(抓包分析,http状态码)
修改默认控制器:
main.php
defaultController = “index”;
【layouts布局的使用】
//在views/layouts/shop.php建立布局文件(头部、脚部、$content)
//配置布局components/Controller.php(普通控制器父类里边), 设置 $layout=’//layouts/shop’
//控制器调用视图views,要使用render()
---------------------------------------------------------------------------------------------------------------------------
【Yii框架与数据库结合】
//建立自己的数据库系统
// Main.php或是database.php主配置文件,配置数据库信息,(包括前缀)
// Yii::app()->db,在随便一个地方输出,完成校验。
【数据库表模型建立】数据表前缀”sw_”在db组件配置好
//根据表,建立相应的model模型,两个必不可少的方法。
tableName() model()
//表模型通过属性扩展,可以延伸为数据模型
//model实例化的,两种方法,
new model(),主要是完成添加操作。
表模型::model() 完成更新,删除,查询,常用。
---------------------------------------------------------------------------------------------------------------------------
【商品信息分页显示】
分页类是以组件的形式给引入系统。
那么在系统任何角落都可以使用这个类。
//分页类文件放入components组件里边,类名和文件名字是一致
//实例化分页类对象,传递两个参数:总记录数目,每页显示的条数
//让limit灵活,对象->limit;
//获得页码列表,对象->fpage()
----------------------------------------------------------------------------------------------------------------------------
//利用框架对表单域进行验证 用户名不能为空。密码不能为空
1. 在model模型,覆盖rules方法,定义为required,并返回验证没有通过的信息。
function rules(){
return array(
array('username','required','message'=>'用户名不能为空'),
array('password','required','message'=>'密码不能为空')
);
}
2.widget表单,echo错误信息
<?php echo $form->error($user_model,'password'); ?>
---------------------------------------------------------------------------------------------------------------------------
【前台用户注册】
//数据模型与表单模型
数据模型直接与数据库表交互,会有写入操作(可新增属性,如确认密码等)
//表单模型收集数据,使用数据,丢弃数据,不写入数据到数据表
// save()->调用 validate()->调用rules() 最终都调用了rules()方法
重写rules()方法,第二个选项涉及validate类的调用,(自定义函数调用)
array('username','required','message'=>'用户名不能为空'),
在使用attributes属性收集表单信息,需要给全部表单域做验证,没有具体验证要求就给一个safe验证,安全验证。
【用户登录系统】 创建用户登录login表单使用的模型就是“表单模型”
用户名和密码校验
存在:就把用户名信息给session持久化
不存在:提示出错信息
//$login_model=new LoginForm();
if(isset($_POST['LoginForm'])){
$login_model->attributes=$_POST['LoginForm'];
if($login_model->validate()&&$login_model->login()){
$this->redirect('./index.php?r=index/index');
}
// validate()—>调用models/LoginForm对象的rules(),完成数据有无填写检验-->components/UserIdentity对象
authenticate()方法,完成真实性校验
UserIdentity对象方法具体,authenticate()方法自定义
//$login_model->login() 用户信息写入session
Layouts/shop.php 布局文件,根据session,判断游客与会员
Yii::app()->user->isGuest
Yii::app()->user->name
-------------------------------------------------------------------------------------------------------------------------
【利用jquery验证表单(用户注册)】
-------------------------------------------------------------------------------------------------------------------------
【用户退出系统】清除用户session信息,完成跳转
//内存session清除
Yii::app()->session->clear();
Yii::app()->session->destroy();
---------------------------------------------------------------------------------------------------------------------------
【验证码captcha】验证码校验:
//图片生成的时候,验证码信息当成变量存放到session里边。
//用户输入的验证码信息与session信息做比较即可。
视图部分
<?php echo $form -> label($login_model,'verifyCode'); ?>
<?php echo $form->textField($user_login, 'verifyCode',array('size'=>15,'class'=>'inputBg',)); ?>
<!--显示验证码图片/使用小物件显示验证码-->
<?php $this -> widget('CCaptcha'); ?>
<?php echo $form->error($user_login,'verifyCode'); ?>
登录表单模型 LoginForm,引入public $verifyCode; //验证码属性
'verifyCode'=>'验证码',//标签语言包
array('verifyCode','captcha','message'=>'请输入正确的验证码'),//validate()时校验规则
控制器部分 actions() //本类中调用别的类方法,
一、我们在视图$this->widget(‘CCaptcha’);
视图会走路由:./index.php?r=user/captcha
二、 在控制器里边actions() 通过当前控制器就可以访问CCaptchaAction的run()方法,该run()方法给我们生成了一个验证码图片。
1. function actions(){
2. return array(
3. 'captcha'=>array(
4. 'class'=>'system.web.widgets.captcha.CCaptchaAction',
5. 'width'=>75, //设置验证码 宽高
6. 'height'=>30,
7. ),
8.
9. );
10. }
-------------------------------------------------------------------------------------------------------------------------
【用户访问控制过滤filters】
Components/controller.php 父类完成设置,子类继承使用,可以覆盖规则
//当前控制器是否使用过滤功能
public function filters()
{
return array(
"accessControl"//针对当前控制器的所有方法起作用
);
//设置可以被访问的方法
public function accessRules()
{
return array(
array(
"allow",//允许访问
"users"=>array("@")//只有登陆用户可以访问
),
array(
"deny",//禁止访问
"users"=>array("*")//所有用户
)
//用户没有权限访问,会跳转到登陆页面,需要在后台引擎中,申明登录页面,
Yii::app()->setComponents(array(
'user'=>array(
'stateKeyPrefix'=>'houtai',
'loginUrl'=>'./index.php?r=houtai/manager/login'
/* 'loginUrl'=>"./index.php?r=houtai/manager/login",*/
),
));
登录页面,重写accessRules()方法
function accessRules() {
return array(
array(
'allow',
'users'=>array('*'),
),
);
}
用户控制过滤
1. 对哪个控制器使用过滤filters() accessControl
2. 制定详细的过滤办法accessRules
3. allow deny 分别表示 允许 禁止
4. 用户表示
a) * 全部用户
b) @ 登录用户
c) ? 匿名用户
d) 用户名 具体用户
5. + - 前者针对具体方法起作用,后者是将无需制约的方法给屏蔽掉。
6. 主要是对控制器的操作
--------------------------------------------------------------------------------------------------------------------------
【框架缓存使用】
缓存的存储介质:文件、内存、数据库
缓存类型:片段缓存、页面缓存、数据缓存
缓存使用
1. main.php,配置缓存组件
cache是系统的一个组件放到main.php的components里边
'components'=>array(
'cache'=>array(
'class'=>'system.caching.CFileCache'
片段缓存:
//Views视图文件中,设置
存在逻辑条件,访问缓存文件,还是生成缓存,
//缓存变化条件:过期时间,get参数,缓存依赖(数据库信息等)
<?php if($this->beginCache('goods_category',array(
'duration'=>'3600',
'varyByParam'=>array('page'),
'dependency'=>array(
'class'=>'system.caching.dependencies.CDbCacheDependency',
'sql'=>'SELECT sum(goods_price) FROM {{goods}}',
),
))) { ?>
$this->endCache();
页面缓存
由于具体页面先于layouts布局文件进入,不能用片段缓存实现页面缓存。
在控制器里,利用用户控制过滤实现页面缓存,(同用户的权限控制,采用方法过滤)
function filters(){
return array(
array(
'system.web.widgets.COutputCache+detail',//只针对detail方法
'duration'=>3600,
'varyByParam'=>array('id'),
)
);
}
动态缓存
Layouts布局文件中,采用控制器里的回调函数,动态显示内容,
回调函数,在父类Controller.php定义,子类继承,适用所有视图,
<?php echo $this->renderDynamic('show_name'); ?>
控制器:
public function show_name(){
return Yii::app()->user->name;
前台搭建(controllers views model)
前台布局使用layouts
数据库使用
创建数据库
在main.php里边配置db数据库组件
制作数据模型model (goods),每个数据模型里边最基本的两个方法tableName 、static model()
模型使用(创建对象、对象调用相关方法CactiveRecord)
【Yii框架部署】
//将php.exe,引入环境变量中,搭建脚手架
//cd 到framework中,yiic webapp ../shop
//ide框架 引入,包括 framework shop的所有文件。
【完成前端业务流程】
//controllers控制器与 views 视图创建
通过“路由”访问控制器:
http://网址域名/index.php?r=控制器/方法
利用控制器操作视图views
外部模板与Yii框架views视图结合
//复制html代码到views下边
//Config 目录中设置constant.php 路径常量 (关于css和图片的)
// shop/index.php ,在同一入口引入路径常量
//views目录各文件,css样式和图片的路径,查找替换为常量
//css样式文件,修改图片对应的路径地址,(抓包分析,http状态码)
修改默认控制器:
main.php
defaultController = “index”;
【layouts布局的使用】
//在views/layouts/shop.php建立布局文件(头部、脚部、$content)
//配置布局components/Controller.php(普通控制器父类里边), 设置 $layout=’//layouts/shop’
//控制器调用视图views,要使用render()
---------------------------------------------------------------------------------------------------------------------------
【Yii框架与数据库结合】
//建立自己的数据库系统
// Main.php或是database.php主配置文件,配置数据库信息,(包括前缀)
// Yii::app()->db,在随便一个地方输出,完成校验。
【数据库表模型建立】数据表前缀”sw_”在db组件配置好
//根据表,建立相应的model模型,两个必不可少的方法。
tableName() model()
//表模型通过属性扩展,可以延伸为数据模型
//model实例化的,两种方法,
new model(),主要是完成添加操作。
表模型::model() 完成更新,删除,查询,常用。
---------------------------------------------------------------------------------------------------------------------------
【商品信息分页显示】
分页类是以组件的形式给引入系统。
那么在系统任何角落都可以使用这个类。
//分页类文件放入components组件里边,类名和文件名字是一致
//实例化分页类对象,传递两个参数:总记录数目,每页显示的条数
//让limit灵活,对象->limit;
//获得页码列表,对象->fpage()
----------------------------------------------------------------------------------------------------------------------------
//利用框架对表单域进行验证 用户名不能为空。密码不能为空
1. 在model模型,覆盖rules方法,定义为required,并返回验证没有通过的信息。
function rules(){
return array(
array('username','required','message'=>'用户名不能为空'),
array('password','required','message'=>'密码不能为空')
);
}
2.widget表单,echo错误信息
<?php echo $form->error($user_model,'password'); ?>
---------------------------------------------------------------------------------------------------------------------------
【前台用户注册】
//数据模型与表单模型
数据模型直接与数据库表交互,会有写入操作(可新增属性,如确认密码等)
//表单模型收集数据,使用数据,丢弃数据,不写入数据到数据表
// save()->调用 validate()->调用rules() 最终都调用了rules()方法
重写rules()方法,第二个选项涉及validate类的调用,(自定义函数调用)
array('username','required','message'=>'用户名不能为空'),
在使用attributes属性收集表单信息,需要给全部表单域做验证,没有具体验证要求就给一个safe验证,安全验证。
【用户登录系统】 创建用户登录login表单使用的模型就是“表单模型”
用户名和密码校验
存在:就把用户名信息给session持久化
不存在:提示出错信息
//$login_model=new LoginForm();
if(isset($_POST['LoginForm'])){
$login_model->attributes=$_POST['LoginForm'];
if($login_model->validate()&&$login_model->login()){
$this->redirect('./index.php?r=index/index');
}
// validate()—>调用models/LoginForm对象的rules(),完成数据有无填写检验-->components/UserIdentity对象
authenticate()方法,完成真实性校验
UserIdentity对象方法具体,authenticate()方法自定义
//$login_model->login() 用户信息写入session
Layouts/shop.php 布局文件,根据session,判断游客与会员
Yii::app()->user->isGuest
Yii::app()->user->name
-------------------------------------------------------------------------------------------------------------------------
【利用jquery验证表单(用户注册)】
-------------------------------------------------------------------------------------------------------------------------
【用户退出系统】清除用户session信息,完成跳转
//内存session清除
Yii::app()->session->clear();
Yii::app()->session->destroy();
---------------------------------------------------------------------------------------------------------------------------
【验证码captcha】验证码校验:
//图片生成的时候,验证码信息当成变量存放到session里边。
//用户输入的验证码信息与session信息做比较即可。
视图部分
<?php echo $form -> label($login_model,'verifyCode'); ?>
<?php echo $form->textField($user_login, 'verifyCode',array('size'=>15,'class'=>'inputBg',)); ?>
<!--显示验证码图片/使用小物件显示验证码-->
<?php $this -> widget('CCaptcha'); ?>
<?php echo $form->error($user_login,'verifyCode'); ?>
登录表单模型 LoginForm,引入public $verifyCode; //验证码属性
'verifyCode'=>'验证码',//标签语言包
array('verifyCode','captcha','message'=>'请输入正确的验证码'),//validate()时校验规则
控制器部分 actions() //本类中调用别的类方法,
一、我们在视图$this->widget(‘CCaptcha’);
视图会走路由:./index.php?r=user/captcha
二、 在控制器里边actions() 通过当前控制器就可以访问CCaptchaAction的run()方法,该run()方法给我们生成了一个验证码图片。
1. function actions(){
2. return array(
3. 'captcha'=>array(
4. 'class'=>'system.web.widgets.captcha.CCaptchaAction',
5. 'width'=>75, //设置验证码 宽高
6. 'height'=>30,
7. ),
8.
9. );
10. }
-------------------------------------------------------------------------------------------------------------------------
【用户访问控制过滤filters】
Components/controller.php 父类完成设置,子类继承使用,可以覆盖规则
//当前控制器是否使用过滤功能
public function filters()
{
return array(
"accessControl"//针对当前控制器的所有方法起作用
);
//设置可以被访问的方法
public function accessRules()
{
return array(
array(
"allow",//允许访问
"users"=>array("@")//只有登陆用户可以访问
),
array(
"deny",//禁止访问
"users"=>array("*")//所有用户
)
//用户没有权限访问,会跳转到登陆页面,需要在后台引擎中,申明登录页面,
Yii::app()->setComponents(array(
'user'=>array(
'stateKeyPrefix'=>'houtai',
'loginUrl'=>'./index.php?r=houtai/manager/login'
/* 'loginUrl'=>"./index.php?r=houtai/manager/login",*/
),
));
登录页面,重写accessRules()方法
function accessRules() {
return array(
array(
'allow',
'users'=>array('*'),
),
);
}
用户控制过滤
1. 对哪个控制器使用过滤filters() accessControl
2. 制定详细的过滤办法accessRules
3. allow deny 分别表示 允许 禁止
4. 用户表示
a) * 全部用户
b) @ 登录用户
c) ? 匿名用户
d) 用户名 具体用户
5. + - 前者针对具体方法起作用,后者是将无需制约的方法给屏蔽掉。
6. 主要是对控制器的操作
--------------------------------------------------------------------------------------------------------------------------
【框架缓存使用】
缓存的存储介质:文件、内存、数据库
缓存类型:片段缓存、页面缓存、数据缓存
缓存使用
1. main.php,配置缓存组件
cache是系统的一个组件放到main.php的components里边
'components'=>array(
'cache'=>array(
'class'=>'system.caching.CFileCache'
片段缓存:
//Views视图文件中,设置
存在逻辑条件,访问缓存文件,还是生成缓存,
//缓存变化条件:过期时间,get参数,缓存依赖(数据库信息等)
<?php if($this->beginCache('goods_category',array(
'duration'=>'3600',
'varyByParam'=>array('page'),
'dependency'=>array(
'class'=>'system.caching.dependencies.CDbCacheDependency',
'sql'=>'SELECT sum(goods_price) FROM {{goods}}',
),
))) { ?>
$this->endCache();
页面缓存
由于具体页面先于layouts布局文件进入,不能用片段缓存实现页面缓存。
在控制器里,利用用户控制过滤实现页面缓存,(同用户的权限控制,采用方法过滤)
function filters(){
return array(
array(
'system.web.widgets.COutputCache+detail',//只针对detail方法
'duration'=>3600,
'varyByParam'=>array('id'),
)
);
}
动态缓存
Layouts布局文件中,采用控制器里的回调函数,动态显示内容,
回调函数,在父类Controller.php定义,子类继承,适用所有视图,
<?php echo $this->renderDynamic('show_name'); ?>
控制器:
public function show_name(){
return Yii::app()->user->name;