• YII 小模块功能


    //1,使用updateCounters()来更新计数器字段。
    Book::model()->updateCounters(array('download_count'=>1),':id=id',array(':id'=>$id));
    
    //2,使用sendFile()来下载文件。
    $type = LFilter::checkString($_GET['t']);
    $dataProvider = Book::model()->findByPk($id);
    $content = $this->renderPartial('book',array(
    'dataProvider' => $dataProvider,
    'type' => $type,
    ),true,false);
    Yii::app()->request->sendFile($dataProvider->name.'.'.$type,$content);
    
    //3,设计数据库时候如果create_time,update_time字段为int(10).在模型中使用行为插件。
    public function behaviors()
    {
    return array(
    'CTimestampBehavior' => array(
    'class' => 'zii.behaviors.CTimestampBehavior',
    'createAttribute' => 'create_time',
    'updateAttribute' => 'update_time',
    )
    ); }
    
    //4,如果有些字段使用1,2,3之类的数字存储,在程序中使用时候含义不明确。可以model中加入如下函数.
     private static $_items = array();
     public static function loadItems($type,$code=null)
    {
        self::$_items = array(
            'status' => array(
                '1' => Yii::t('dh','开启'),
                '2' => Yii::t('dh','关闭'),
            ),
             'type' => array(
                '1' => Yii::t('dh','产品'),
                '2' => Yii::t('dh','文章'),
            ),
        );
        return $code ? self::$_items[$type][$code] : self::$_items[$type];
    }
    
    
    //5,多语言使用Yii::t()函数。
           public function attributeLabels()
    {
     return array(
      'verifyCode'=>Yii::t('default','验证码'),
                           'name'=>Yii::t('default','名字'),
                           'email'=>Yii::t('default','邮箱'),
                           'subject'=>Yii::t('default','标题'),
                           'body'=>Yii::t('default','内容'),
                           'required'=>Yii::t('default','变量"{var}"没有定义',array('{var}'=>$var));
     );
    }
    
    
    
    //6,数据库表使用了前缀,则使用{{$tableName}}。
    public function tableName()
    {
     return '{{product}}';
    
    //7,Cookie的使用
    //设置Cookie
    $cookie=new CHttpCookie($name,$value);
    $cookie=time()+60*60*24;
    Yii::app()->request->cookies[$name]=$cookie;
    //获取Cookie
    $cookie=Yii::app()->request->cookies[$name];
    $value=$cookie->value;
    //删除Cookie
    $cookie = Yii::app()->request->getCookies();
    unset($cookie[$name]);
    }
    
    
    //8,zii.widgets.jui.CJuiTabs的使用
    <?php
            $this->widget('zii.widgets.jui.CJuiTabs', array(
                'tabs'=>array(
                    Yii::t('book','基本信息') => $this->renderPartial('_basic',array(
                            'model' => $model,
                            'form' => $form,
                    ),true),
                    Yii::t('book','作品标签') => array('ajax'=> $this->createUrl('tag/boxList',array('tag'=>$model->tag))),
                    Yii::t('book','作品封面') => $this->renderPartial('_image',array(
                            'model'=>$model,
                            'form'=>$form,
                    ),true),
                    Yii::t('book','作品公告') => $this->renderPartial('_notice',array(
                            'model'=>$model,
                            'form'=>$form,
                    ),true),
                ),
                // additional javascript options for the tabs plugin
                'options'=>array(
                    'collapsible'=>false,
                ),
            ));
    
      ?>
    
    //对于tabs而言,对于复杂内容的渲染结合使用renderPartial();
    
    //9,zii.widgets.grid.CGridView的使用
    
    <?php $this->widget('zii.widgets.grid.CGridView', array(
     'id'=>'chapter-grid',
     'dataProvider'=>$model->search(),
     'filter'=>$model,
     'columns'=>array(
      'id',
      //锚点<a href="http://blog.163.com/huv520@126/blog/"></a>
       array(
           'name'=>'name',
                  'type'=>'raw',
                  'value'=>'CHtml::link($data->name,"/book/$data->id")',
             ),
                    //图片
             array(
       'name'=>'image',
                  'type'=>'image',
                  'value'=>'LImages::getPath("book").$data->image',//图片相对路径
             ),
                   //下拉列表
             array(
           'name'=>'type',
                  'value'=>'Lookup::item("chapterType",$data->type)',
                  'filter'=>Lookup::items('chapterType'),
             ),
                   //内容截取
             array(
           'name'=>'content',
                  'type'=>'html',
                  'value'=>'mb_substr(htmlspecialchars_decode($data->content),0,100,"utf-8")',
             ),
                   //时间
             array(
          'name'=>'create_time',
                  'type'=>'datetime',
             ),
                    // 根据相关信息读数据库
      array(
                  'name'=>'user_id',
                  'value'=>'User::model()->findbyPk($data->user_id)->username',
                  'filter'=>false,
             ),
      array(
       'class'=>'CButtonColumn',
      ),
     ),
    )); ?>
    
    //10,findAll()的使用;
    $params=array(
         'select'=>'id,name,image',
         'order'=>'total_point DESC',
         'limit'=>5,
     );
    
     $this->findAll($params);
    find()使用同理,只是返回一条数据。
    //11,readAll()返回数组结果集
    
    $query = 'SELECT id,username FROM user';
    $command = Yii::app()->db->createCommand($query);
    return $command->query()->readAll();
  • 相关阅读:
    win10下 Ubuntu 18.04 LTS 的安装及 rlt8821ce网卡驱动的安装
    网络:tcp/ip
    数据结构分类
    面向对象的solid原则
    mysql数据库的操作
    锁机制
    设计模式在项目中的应用
    aop动态代理底层实现模拟
    变量在内存的分配_复习
    java内部类及类加载顺序
  • 原文地址:https://www.cnblogs.com/imxiu/p/3418330.html
Copyright © 2020-2023  润新知