手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:dropbox

扩展yii的验证类

在项目中遇到文件上传的问题,这时候需要用到CFileValidator,但是官方的验证中少了一点点的处理,比如,对于图片,我只想上传尺寸正好是300x500的图片。怎么办?
所以我做了一点小小的扩展,于是我在rules里面加了这么两条:

PHP代码
  1. array('picname''application.validators.Myfile''on'=>'insert','types'=>'jpg,png','wrongType'=>'只允许上传jpg或者PNG','maxSize' => 1024*300,'tooLarge' => '图片最大只支持300K','imageSize'=>'768x1024','wrongImageSize'=>'对不起,图片尺寸只支持768*1024'),  
  2.          array('picname''application.validators.Myfile''on'=>'update','types'=>'jpg,png','wrongType'=>'只允许上传jpg或者PNG','maxSize' => 1024*300,'tooLarge' => '图片最大只支持300K','imageSize'=>'768x1024','wrongImageSize'=>'对不起,图片尺寸只支持768*1024','allowEmpty'=>true,),  

数组的第二个字段就是一个全路径,告诉rules,对于picname用的是application.validators.Myfile类。这个类其实很简单,只是简单的扩展了官方的CFileValidator类,大致如下:

PHP代码
  1. class Myfile extends CFileValidator{  
  2.     public $imageSize;  
  3.     public $wrongImageSize;  
  4.   
  5.     /** 
  6.      * @param CModel $object the object being validated 
  7.      * @param string $attribute the attribute being validated 
  8.      * @param CUploadedFile $file uploaded file passed to check against a set of rules 
  9.      * @return void 
  10.      */  
  11.     protected function validateFile($object$attribute$file){  
  12.         parent::validateFile($object,$attribute,$file);  
  13.         if($this->imageSize!=''&&strpos($this->imageSize,"x")!==false){  
  14.             list($width,$height) = @getimagesize($file->getTempName());  
  15.             $imageSize = sprintf("%sx%s",$width,$height);  
  16.             if($imageSize != $this->imageSize){  
  17.                 $message=$this->wrongImageSize!==null?$this->wrongImageSize : Yii::t('yii','The file "{file}" cannot be uploaded. Only files with these size are allowed: {imagesize}.');  
  18.                 $this->addError($object,$attribute,$message,array('{file}'=>$file->getName(), '{extensions}'=>$this->imageSize));  
  19.             }  
  20.         }  
  21.     }  
  22. }  

我这种只是简单的判断是否与指定尺寸相符,如果需要检测小于指定范围的图片,那就需要多一点的判断了,也不会太难啦。主要是一个思路(感谢烂桔提供思路)

Tags: yii

乱弹

随便的扯几句喽。。。
1、ipad ,突然发现sbsetting的功能超强大啊。。我明明在ipad里选择了飞行模式,居然可能通过sbsetting打开wifi。而且飞行模式的小飞机居然还存在。牛叉的。。

2、电视连续剧《儿女冤家》,突然感觉里面的情节好真实,这是自《蜗居》以来又一个让人心动的电视。看到电视里的人物,心里觉得好揪心,啃老族这一个词已 经成了一个很让人烦的词语。有的时候,我也觉得自己也算一个啃老族 啊。工作这么多年,也成家了,却几乎没有拿过一分钱回过家。看到电视里的那对儿女,却是比我还厉害。不但吃父母用父母还要占父母的房子。唉。。。。。因为 没有看过结局,所以我就不再多下评论了。

3、乔楚乔大姐,又想带队翻译PHP手册了。感觉乔楚还算是很专注的一个人,但事实上,翻译这种事情,一定要对PHP很深入才能翻译,否则翻译出来很可能 词不达意。所幸他们还会再做校验。同时乔楚发邮件给官方,并收到邮件,终于也可以使PHP中文版在下载列表里显示出来了。(都2年多了,中文手册一直被雪 藏。。感谢乔楚)

4、Yii,最近我在看着Yii,并且根据Yii的代码抄一遍。这样感觉一来可以学习Yii的代码,可以更深入一点。二来,也可以了解Yii的一些设计思 想。Yii的代码还算是比较多的,而且多了一些zii,gii之类的扩展,功能是越来越强大了。只是Yii已经只支持PDO了。准备在抄的过程中还是要支 持一下默认的mysql扩展。(因为有的虚拟主机在命令行的时候,不支持PDO,很妖)

Tags: yii, 儿女冤家, 手册, ipad

ipad 常用软件

我的ipad上有几个常用的软件,嗯横。我比较不太喜欢装软件,所以在用的一般就会一直用下去。

1、good reader 这个,是看书的,除了不支持chm,其他几种基本都支持了。为此我买了正版。0.99刀,但遗憾的是。。。我居然装了看不到图标了。更遗憾的是,单位的IP是192.168.10网段,而无线却是192.168.1的网段,因此,good reader在开通wifi的时候却显示让我们使用192.168.10网段。于是乎,这个功能我就永远无法使用了。

2、pinball ,这个就不用多说了。。。

3、愤怒的小鸟。。。娱乐软件

4、会说话的TOM。给小朋友玩的。

5、植物大战僵尸,纯属娱乐。。。

6、UC,看wap网页的。。。

7、readdleDocs。。本来以为这个才能看word,事实上,有很多都可以。。比如goodreader。所幸good reader显示不出的时候,它能够显示

8、金山快盘。之所以用这个,是因为wps中有个快盘可以存word之类的,所以我可以利用ipad来同步一些资料

9、evernote。。因为,手机上有,电脑上有,所以。。。理所当然喽。

Tags: ipad, software

ySlow的计算公式

来自于hello,JavaScript的收藏,我也小小的收藏一下:

http://www.beiju123.cn/blog/?p=513
  1. F = 8×{100-[4×(JS文件数-3)+4×(CSS文件数-2)+3×(CSS背景图连接数-6) ] }  
  2.     +6×(100-10×未使用CDN的连接个数)  
  3.     +10×[100-11×(Expire时间小于172800秒的连接个数) ]  
  4.     +8×[100-11×(文件大小大于500字节且 未使用gzip的连接个数)]  
  5.     +4×[body中没有CSS连接 ? 100∶ (99-10×body中的CSS连接数) ]  
  6.     +4×(100-5×head中的JavaScript连接数)  
  7.     +3×[不存在CSS表达式 ?100: (90-2×CSS表达式数目) ]  
  8.     +3×[100-5×(域名数-4)]  
  9.     +4×(100-10×未精简的CSS与JS个数)  
  10.     +4×(100-10×Redirect个数)  
  11.     +4×[100-5×(重复的JavaScript个数+重复的CSS个数) ]  
  12.     +2×(100-11×未使用Etag的连接个数)  
  13.     +4×(100-5×未缓存或者缓存时间不足3600秒的AJAX请求个数)  
  14.     +3×(100-5×请求方式不是GET的AJAX个数)  
  15.     +3×{DOM元素数量<MaxDOM ?100∶ [99-10×⌈((DOM元素数量-900))/250⌉ ] }  
  16.     +4×(100-5×状态为404的连接个数)  
  17.     +3×[cookie大小不超过1000字节 ?100∶ (99-10×⌊页面cookie的大小/1000⌋ ) ]  
  18.     +3×(100-5×不满足cookie free要求的链接个数)  
  19.     +4×[100-(2×使用hack的filter个数+5×未使用hack的filter个数) ]  
  20.     +3×(100-5×在HTML代码中设定width和height的图片数)  
  21.     +2×[100-(favicon不可缓存或缓存时间小于3600秒 ? 5∶0)-(favicon大小超过2000字节? 5∶0)]  
  22.   
  23. Score = F / 89 

 

Tags: yslow