Bonjour,

Je souhaiterais récupérer l'id de la session afin de la sauvegarder en base lors des enregistrement; lors de la sauvegarde un dossier sera créé avec l'id de la session

Ci-dessous mon controller

<?php
App::uses('AppController', 'Controller');

class AvatarsController extends AppController {
    public $name = 'Avatars';
    public $helpers = array('Text','Form','Html', 'Session', 'Date');
    public $components = array('Img');

        public function index(){
        $d'avatars'] = $this->Avatar->find('all',array(
            'conditions' => array('type' => 'image'
            )));
        $d'avatars'] = $this->Paginate('Avatar',array('type'=>'image'));
        $this->set($d);
        }

        public function dossier($dossier){
            $this->loadmodel('dossier');
            $dos = $this->Dossier->find('first',array(
            'conditions' => array('slug' => $dossier)
        )); 

        if(empty($dos))
            throw new NotFoundException('Aucune dossier ne correspond a cet ID');
        $d'avatars'] = $this->Paginate('Avatar',array('dossier_id'=> $dos'Dossier']'id']));
        $this->set($d);
        $this->render('index');

    }
        public function profitavancer(){    

         $this->loadModel('Dossier');
         $d'dossiers'] = $this->Dossier->find('list');
         $this->set($d);
            if($this->request->is('post')){
                $data = $this->request->data'Avatar'];

                // Création du dossier galerie 

                $dir = IMAGES.'membre'.'/'.$data'dossier_id'];
                    if(!file_exists($dir))
                        mkdir($dir,0777);

                        // création du sous dossier utilisateur grâce à l'id de l'utilisateur connecté

                        $dir .= DS.$data'dossier']'user_id'];
                            if(!file_exists($dir))
                                mkdir($dir,0777);
                    //debug($dir);die();    
                $f = explode('.',$data'file']'name']);
                $ext = '.'.end($f);
                $filename = Inflector::slug(implode('.',array_slice($f,0,-1)),'-');

            // Sauvegarde dans la base de données

                $success = $this->Avatar->save(array(
                    'name' => $data'name'],
                    'url' => 'membre'.'/'.$data'dossier_id'].'/'.$data'dossier']'user_id'].'/'.$filename.$ext,
                    'user_id' => $data'dossier']'user_id'],
                    'dossier_id' => $data'dossier']'id']
                ));
            //debug($dir);die();

                if($success){
                    move_uploaded_file($data'file']'tmp_name'],$dir.DS.$filename.$ext);
                    //On parcourre les different de format de media 
                        foreach(Configure::read('Gallery.formats') as $k =>$v){
                            $prefix = $k;
                            $size = explode('x',$v);
                            $this->Img->crop($dir.DS.$filename.$ext,$dir.DS.$filename.'_'.$prefix.'.jpg',$size[0],$size[1]);
                        }
                }else{
                    $this->Session->setFlash("L'image n'est au bon format","notif",array('type'=>'error'));
                }
            }
            $d = array();
            $d'avatars'] = $this->Avatar->Dossier->find('all');
                /*debug($d);die();*/
                $d'formats'] = Configure::read('Gallery.formats');
                $this->set($d);
        }
        public function voir($dos,$id){
            $data'avatars']=$this->Avatar->find("first",array(
           'conditions' => array('id' =>'$id','dos'=>'$dos')
        ));

            $this->set($data);
        }

        function admin_delete($id){
            $this->Avatar->delete($id);
            $this->Session->setFlash("L'image a bien été supprimé","notif");
            $this->redirect($this->referer());
        }
}

Tout fonctionne a par la création du dossier utilisateur que je dois récupérer l'id

Je vous remerci de votre aide

cafreunion

4 réponses


cafreunion
Auteur
Réponse acceptée

Bonjour,
Merci pour votre réponse mais entre-temps j'ai trouvé comment faire ci-dessous mon script et il fonctionne maintenant
Mon controller AvatarsConttoller.php

<?php
App::uses('AppController', 'Controller');

class AvatarsController extends AppController {
    public $name = 'Avatars';
    public $helpers = array('Text','Form','Html', 'Session', 'Date');
    public $components = array('Img');

        public function index(){
        $d'avatars'] = $this->Avatar->find('all',array(
            'conditions' => array('type' => 'image'
            )));
        $d'avatars'] = $this->Paginate('Avatar',array('type'=>'image'));
        $this->set($d);
        }

        public function dossier($dossier){
            $this->loadmodel('dossier');
            $dos = $this->Dossier->find('first',array(
            'conditions' => array('slug' => $dossier)
        )); 

        if(empty($dos))
            throw new NotFoundException('Aucune dossier ne correspond a cet ID');
        $d'avatars'] = $this->Paginate('Avatar',array('dossier_id'=> $dos'Dossier']'id']));
        $this->set($d);
        $this->render('index');

    }
        public function profitavancer(){    
        $membre = $this->Session->read('Auth.User.id');
         $this->loadModel('Dossier');
         $d'dossiers'] = $this->Dossier->find('list');
         $this->set($d);
            if($this->request->is('post')){
                $data = $this->request->data'Avatar'];

                // Création du dossier galerie 

                $dir = IMAGES.'membre'.'/'.$data'dossier_id'];
                    if(!file_exists($dir))
                        mkdir($dir,0777);
                        // création du sous dossier image

                        $dir .= DS.$membre;
                            if(!file_exists($dir))
                                mkdir($dir,0777);
                //debug($dir);die();    

                $f = explode('.',$data'file']'name']);
                $ext = '.'.end($f);
                $filename = Inflector::slug(implode('.',array_slice($f,0,-1)),'-');

            // Sauvegarde dans la base de données

                $success = $this->Avatar->save(array(
                    'name' => $data'name'],
                    'url' => 'membre'.'/'.$data'dossier_id'].'/'.$membre.'/'.$filename.$ext,
                    'user_id' => $membre,
                    'dossier_id' => $data'dossier_id'],
                    'online' => $data'online']
                ));
            //debug($success);die();

                if($success){
                    move_uploaded_file($data'file']'tmp_name'],$dir.DS.$filename.$ext);
                    //On parcourre les different de format de media 
                        foreach(Configure::read('Gallery.formats') as $k =>$v){
                            $prefix = $k;
                            $size = explode('x',$v);
                            $this->Img->crop($dir.DS.$filename.$ext,$dir.DS.$filename.'_'.$prefix.'.jpg',$size[0],$size[1]);
                        }
                }else{
                    $this->Session->setFlash("L'image n'est au bon format","notif",array('type'=>'error'));
                }
            }
            $d = array();
            $d'avatars'] = $this->Avatar->Dossier->find('all');
                /*debug($d);die();*/
                $d'formats'] = Configure::read('Gallery.formats');
                $this->set($d);
        }
        public function voir($dos,$id){
            $data'avatars']=$this->Avatar->find("first",array(
           'conditions' => array('id' =>'$id','dos'=>'$dos')
        ));

            $this->set($data);
        }

        function admin_delete($id){
            $this->Avatar->delete($id);
            $this->Session->setFlash("L'image a bien été supprimé","notif");
            $this->redirect($this->referer());
        }
}

Et mon formulaire servant de l'upload Profitavance.php

<div id="form">
    <b>Ajoutrer une image</b>
        <?php echo $this->Form->create('Avatar',array('type'=>'file'));?>
        <?php echo $this->Form->input('file',array('label'=>'Image (format png/jpg)','type'=>'file'));?>
        <?php echo $this->Form->input('user_id',array('type' => 'hidden', 'value' => $this->Session->read('Auth.User.id')));?>
        <?php echo $this->Form->input('name',array('label'=>"Nom de l'image"));?>
        <?php echo $this->Form->input('dossier_id',array('label'=>'Répertoire'));?>
        <?php echo $this->Form->input('online',array('label'=>'En ligne ?','type'=>'checkbox'));?>
        <?php echo $this->Form->input('id'); ?>
    <?php echo $this->Form->end('Envoyer');?>
</div>

Ci ca peut aider

Cafreunion

Re'
Personne ne peut m aider sur ce problème
Comment je peux faire pour récupérer l'id via la session lors de la sauvegarde dans ma base de donnee
Je transmet déjà un id concernant la catégorie donc pour l'utilisateur j'y arrive pas
Mon helper session est bien charger dans mon controller
Je vous remercie pour l'aide que vous pourriez m'a apporter
Cafreunion

Comment est construit la table users?

Salut, si tu veux récupérer l'id de l'utilisateur connecté, c'est du côté de AuthComponent que ça se passe.