2016-02-18 1 views
4

J'ai défini les validations comme suit,validation de dimension d'image 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], 

mais la dernière ligne ne fonctionne pas. je pourrais télécharger des images dans n'importe quelle dimension.

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

pourquoi cela ne fonctionne-t-il pas?

class User extends Base 
{ 
public $image; 

avatar et fileName sont stockés dans la base de données.

Et dans le contrôleur, j'utilise.

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

Répondre

6

Il n'y a rien de mal avec la dernière ligne autant que je peux voir. Mais vous déclarez des règles pour l'attribut image deux fois: une en tant que fichier et une en tant qu'image. Le validateur d'image s'étend à partir du validateur de fichier, donc il hérite de toutes ses propriétés.

image Validator (docs):

Ce validateur vérifie si la valeur d'entrée représente un fichier d'image valide. Il s'étend du validateur de fichier et hérite ainsi de toutes ses propriétés. En outre, il prend en charge les propriétés supplémentaires suivantes spécifiques à la fin de la validation d'image:

Essayez de le combiner en une seule règle, et voyez si cela aide.

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

Edit: Et vous devez enregistrer l'image dans le $model, comme $model->image pour qu'il soit validé par les règles de validation de modèle si vous êtes dans le contrôleur.

Voici un bon exemple: http://www.yiiframework.com/doc-2.0/guide-input-file-upload.html

+0

j'ai essayé de combiner et comme mentionné. ça ne marche toujours pas. Au lieu de cela, il est simplement téléchargé sans validation. je doute que si le validateur d'image fonctionne correctement parce que je pourrais même télécharger le fichier .csv avec ceci –

+0

Juste vu quelque chose, mettant à jour la réponse –

+0

Cela fonctionne pour moi. Merci ! – CTala