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
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.