Salut,
J'ai remarquer que j'ai un petit problème qui ne créer pas un dossier qui contient l'avatar de chacun de mes utilisateur.
Je utilise le model user pour automatiser l'opération grâce à cette fonction
public function afterSave($created){
// Upload the avatar (user)
if(isset($this->data$this->alias]'avatarf']) && !empty($this->data$this->alias]'avatarf']'tmp_name'])){
$file = $this->data$this->alias]'avatarf'];
$dest = IMAGES . 'avatars' . DS . ceil($this->id/1000);
if(!file_exists($dest)){
mkdir( $dest, 0777, true);
}
$dest .= DS . $this->id . '.png';
require APP . 'Vendor' . DS . 'imagine.phar';
$imagine = new Imagine\Gd\Imagine();
try{
$imagine
->open($file'tmp_name'])
->thumbnail(
new Imagine\Image\Box(160, 160),
Imagine\Image\ImageInterface::THUMBNAIL_OUTBOUND)
->save($dest);
$this->saveField('avatar', 1);
}catch(Imagine\Exception\Exception $e){
$this->Session->setFlash("Désolé, il y a eu une erreur dans le traitement de l'image.",'notif',array('type'=>'error'));
}
}
}
Le résultat que je veux avoir est le suivant :
img/avatars/1/1.png' = l'utilisateur qui l'id 1
img/avatars/2/2.png = l'utilisateur qui a l'id 2
Le résultat qui me donne est pas ça :
img/avatars/1'
Quand l'utilisateur qui a enregistrée ses informations
il va mettre tous dans le dossier 1.
/img/avatars/1/2.png
Merci de votre aide en avance
Je comprends pas trop ton ceil
$dest = IMAGES . 'avatars' . DS . ceil($this->id/1000);
Ton ceil($this->id/1000) va retourné toujours 1 pour les id jusqu'à 1000.
Ceci est plus logique :
$dest = IMAGES . 'avatars' . DS . $this->id;
Oui c'est exact, mais pour un id (identifiant unique), pas besoin de le diviser par 1000 et ensuite de l'arrondir à la valeur supérieur.
Car là avec ceil($this->id/1000) tu va obtenir pour les ID :
ID 1 / 1000 = 0.001 ceil = 1
ID 2 = 0.002 ceil = 1
etc..
C'est pour ceci que ton code regardais toujours le dossier 1