Bonsoir à tous.
Je suis face à un soucis. dans la partie insertion d'image depuis le web
problm ds encodage de url
<?php
class MediasController extends AppController {
public $components = array('Img');
public function beforeFilter(){
parent::beforeFilter();
$this->layout = "modal";
}
function admin_index($post_id){
if($this->request->is('post')){
$data = $this->request->data;
if(isset($data'Media']'url'])){
$this->redirect(array('action' => 'show' , "?class=&alt=&src=".urlencode($data'Media']'url'])));
}
$dir = IMAGES.date('Y');
if(!file_exists($dir)){
mkdir($dir,0777);
}
$dir .= DS.date('m');
if(!file_exists($dir)){
mkdir($dir,0777);
}
$f = explode('.', $data'Media']'file']'name']);
$ext = '.'.end($f);
$filename = Inflector::slug(implode('.' ,array_slice($f,0,-1)),'-');
if(!empty($data'Media']'name'])){
$name = $data'Media']'name'];
}else{
$name = $filename;
}
$n = $dir.DS.$filename.$ext;
if(file_exists($n)){
$i = 1;
while(true){
$n = $dir.DS.$filename.$i.$ext;
if(!file_exists($n)){
$filename = $filename.$i;
break;
}
$i++;
}
}
// Sauvegarde en bDD
$success = $this->Media->save(array(
'name' => $name,
'url' => date('Y').'/'.date('m').'/'.$filename.$ext,
'post_id' => $post_id
));
if($success){
move_uploaded_file($data'Media']'file']'tmp_name'] , $dir.DS.$filename.$ext);
foreach(Configure::read('Media.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 pas au bon format","notif",array('type'=> 'error'));
}
}
$d'medias'] = $this->Media->find('all' , array (
'conditions' => array('post_id' => $post_id, 'type' => 'image')
));
$d'format'] = Configure::read('Media.formats');
$this->set($d);
}
function admin_show($id=null,$format=''){
$d =array();
if($this->request->is('post')){
$this->set($this->request->data"Media"]);
$this->layout = false;
$this->render('tinymce');
return;
}
if($id){
$this->Media->id =$id;
$media = current($this->Media->read());
$d'src'] = Router::url('/img/'.$media'url'.$format]);
$d'alt'] = $media'name'];
$d'class'] = 'alignLeft';
}else{
$d = $this->request->query;
$d'src'] = urldecode($d'src']);
}
$this->set($d);
}
function admin_delete($id){
$this->Media->delete($id);
$this->Session->setFlash("L'image à bien été supprimée",'notif',array('type' => 'success'));
$this->redirect($this->referer());
}
}
et mon view
<h3>Depuis le web</h3>
<?php echo $this->Form->create('Media'); ?>
<?php echo $this->Form->input('url', array('label' => 'URL de l\'image')); ?>
<?php echo $this->Form->end('Insérer'); ?>
je tiens à remercier Grafikart pour c'est super tuto
Salut,
Le sujet a déjà été traité dans les commentaires du tuto car je m'en suis servi aussi,voici la solution :
rajoute dans ta fonction show du controller
if($id && is_numeric($id))
Cela devrait fonctionné ensuite.
A+
De rien c'est avec plaisir, pour une fois que je peux ajouter ma pierre à l'édifice en aidant à mon tour quelqu'un.