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

4 réponses


Blinkers
Réponse acceptée

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;
lakamark
Auteur

La function ciel arrondi la valeur au supérieur non?

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

lakamark
Auteur

Okay, je comprend. Dans ce besoin je n'avais pas besoin de faire un ciel.