yii1电子商城总结

总结:


前台搭建(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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值