Bonjour
Je fais des upload des photo/image en fonction des rubrique, j'ai un e formulaire qui me permet de crée des rubrique ainsi que les dossiers concernées
lors que j'utilise mon formulaire d'upload pour les phots/images ils vont dans le bon répértoire mais mais pas dans le bon dossier

Ci-dessous mon controller pour l'upload

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

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

        public function beforeFilter(){
            parent::beforeFilter();
            $this->layout = 'gallery';
        }
        function rubrique($rubrique){
            $cat = $this->Gallery->Rubrique->find('first',array(
            'conditions' => array('slug' => $rubrique)
    )); 
        if(empty($cat))
            throw new NotFoundException('Aucune rubrique ne correspond a cet ID');
        $d'galleries'] = $this->Paginate('Gallery',array('type'=>'image','rubrique_id'=> $cat'Rubrique']'id']));
        $this->set($d);
        $this->render('index');

    }
        public function show(){     
         $this->loadModel('Rubrique');
         $d'rubriques'] = $this->Rubrique->find('list');
         $this->set($d);
            if($this->request->is('post')){
                $data = $this->request->data'Gallery'];

                // Création du dossier galerie 

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

                        //debug($dir);die();

                        // création du sous dossier image

                        $dir .= DS.date('M');
                            if(!file_exists($dir))
                                mkdir($dir,0777);

                $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->Gallery->save(array(
                    'name' => $data'name'],
                    'url' => 'phototheque'.'/'.$data'rubrique_id'].'/'.date('M').'/'.$filename.$ext,
                    'rubrique_id' => $data'rubrique_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'galleries'] = $this->Gallery->Rubrique->find('all',array(
                'conditions' => array('rubrique_id' >= 0)
                ));
                //debug($d);die();
                $this->set($d);
        }
        public function voir($cat,$id){
            $data'galleries']=$this->Gallery->find("first",array(
           'conditions' => array('id' =>'$id','cat'=>'$cat')
        ));

            $this->set($data);
        }

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

Mon model

<?php
class Rubrique extends AppModel {
    public function afterfind($data){
        foreach ($data as $k => $d){
            if(isset($d'Rubrique']'slug']) && isset($d'Rubrique']'id'])){
                $d'Rubrique']'link'] = array(
                    'controller' => 'galleries',
                    'action' =>'Rubrique',
                    'slug' => $d'Rubrique']'slug']
                    );
                }
                    $data$k] = $d;
                }
        return $data;
    }
    public function beforeSave(){
     if(empty($this->data'Rubrique']'slug']) && isset($this->data'Rubrique']'slug']) && !empty($this->data'Rubrique']'name']))
        $this->data'Rubrique']'slug'] = strtolower(Inflector::slug($this->data'Rubrique']'name'],'-')); 
            return true;
    }
}
?>

Débug lors de l'upload

\app\Controller\GalleriesController.php (line 60)
'E:\wamp\www\malagasy\app\webroot\img\phototheque/2\Apr'

A la place du 2 je voudrais avoir le nom de la rubrique qui existe déja

je vous remercie de votre aide

cafreunion

2 réponses


cafreunion
Auteur
Réponse acceptée

Re,

Merci de votre réponse, j'ai fais un test et cela ne fonctionne pas.
J'ai revu le nommage lors de la création de mes rubriques au lieu de les nommer par nom je les aient renommés par ID du coups ca fontionne.
Seul problème c'est pour récupéré les info ca bug pour l'instant.

Cafreunion

Salut, si a la place de

$dir = IMAGES.'phototheque'.'/'.$data'rubrique_id'];

tu mettais:

$dir = IMAGES.'phototheque'.'/'.$d'Rubrique']'name'];

pour moi c'est a ce niveau que ça va pas, car tu donne l'id de la rubrique a la place du nom quand tu va créer ton dossier.