2016-02-18 66 views
4

我已經定義了驗證如下,Yii2圖像尺寸驗證

[['avatar', 'fileName', 'image'], 'safe'], 
    [['image'], 'file', 'extensions' => 'jpg, gif, png', 'maxSize' => 1024 * 1024 * 2], //max size is 2mb 
    ['image', 'image', 'minWidth' => 250, 'maxWidth' => 250,'minHeight' => 250, 'maxHeight' => 250], 

但最後一行不起作用。我可以在任何維度上傳圖片。

['image', 'image', 'minWidth' => 250, 'maxWidth' => 250,'minHeight' => 250, 'maxHeight' => 250], 

爲什麼這不起作用?

class User extends Base 
{ 
public $image; 

頭像和文件名存儲在數據庫中。

而在控制器中,我使用。

$image = UploadedFile::getInstance($this, 'image'); 

回答

6

就我所見,最後一行沒有任何錯誤。 https://github.com/yiisoft/yii2/blob/master/docs/guide/tutorial-core-validators.md#yiivalidatorsimagevalidatorimage-

但是你聲明image屬性的規則兩次 - 一個作爲文件,一個作爲圖像。圖像驗證器從文件驗證器擴展而來,因此它繼承了它的所有屬性。

圖片驗證器(文檔):

如果輸入值表示有效的圖像文件這個驗證檢查。它從文件驗證器擴展並繼承其所有屬性。此外,它還支持以下用於圖像驗證的特定附加屬性:

嘗試將它合併到一個規則中,並查看是否有幫助。

['image', 'image', 'minWidth' => 250, 'maxWidth' => 250,'minHeight' => 250, 'maxHeight' => 250, 'extensions' => 'jpg, gif, png', 'maxSize' => 1024 * 1024 * 2], 

編輯: 而你需要將圖像保存在$model,像$model->image爲它通過模型驗證規則,如果你在控制器是進行驗證。

這裏是一個很好的例子: http://www.yiiframework.com/doc-2.0/guide-input-file-upload.html

+0

我試圖把它結合起來,如提及。它不起作用。而不是僅僅上傳而沒有驗證。我懷疑如果圖像驗證工作正常,因爲我甚至可以上傳.csv文件與此 –

+0

只是看到了一些東西,更新回答 –

+0

這對我有用。謝謝 ! – CTala