Bonjour, en suivant le tuto "Développer un site avec CakePHP", j'ai eu un problème au jour 2 :
A la fin du tuto, tu explique comment gérer l'upload d'images depuis internet. J'ai tout suivi, sauf que quand je redirige sur la page d'insertion, j'ai une erreur 404. J'ai fait des debug() pour voir un peu tout ça et j'ai diagnostiqué que la vue admin_show ne recevait pas le paramètre 'url'. Ça bloque aussi au if($id), ligne 97.
Je suis sur XAMPP avec Linux Salix.
Code de mon MediaController :
[code]<?php
class MediasController extends AppController {
function beforeFilter() {
parent::beforeFilter();
$this->layout = "modal";
}
function admin_index($post_id) {
if ($this->request->is('post')) {
$data = $this->request->data['Media'];
if (isset($data['url'])) {
$this->redirect(array("action" => "show", '?class=&alt=&src='.urlencode($data['url'])));
# code...
}
$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['file']['name']);
$ext = '.'.end($f);
$filename = Inflector::slug(implode('.',array_slice($f, 0,-1)),'-');
$success = $this->Media->save(array(
"name" => $data['name'],
"url" => date('Y').'/'.date('m').'/'.$filename.$ext,
"post_id" => $post_id
));
if ($success) {
move_uploaded_file($data['file']['tmp_name'], $dir.DS.$filename.$ext);
}
else {
$this->Session->setFlash("Format de l'image invalide", "error", array("type" => "error"));
}
}
$d = array();
$d['medias'] = $this->Media->find('all',array(
"conditions" => array("post_id" => $post_id)
));
$this->set($d);
debug($this->request->data);
}
function admin_show($id = null) {
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']);
$d['alt'] = $media['name'];
$d['class'] = "alignLeft";
die('ouin');
}
else {
$d = $this->request->query;
$d['src'] = urldecode($d['url']);
die('Youpi !');
}
$this->set($d);
debug($d);
}
function admin_delete($id) {
$this->Media->id = $id;
$file = $this->Media->field('url');
unlink(IMAGES.DS.$file);
$this->Media->delete($id);
$this->Session->setFlash("L'image a bien été supprimée", "notif");
$this->redirect($this->referer());
}
}
?>[/code]
Code de ma vue 'admin_show' :
[code]
<h3>Insérer l'image</h3>
<img src="<?php echo $src; ?>" style="max-width:200px" >
<?php echo $this->Form->create('Media'); ?>
<?php echo $this->Form->input("alt", array("label" => "Description de l'image", "value" => $alt)); ?>
<?php echo $this->Form->input("src", array("label" => "Chemin de l'image", "value" => $src, "required" )); ?>
<?php echo $this->Form->input("class", array("legend" => "Alignement", "options" => array(
"alignLeft" => "Aligner à gauche",
"alignCenter" => "Aligner au centre",
"alignRight" => "Aligner à droite"
), "type" => "radio", "value" => $class,"required" )); ?>
</br>
<?php echo $this->Form->end('Insérer'); ?>
[/code]
Merci d'avance,
Cordialement,
Squix