Salut à toutes et à tous!
J'ai un petit problème avec mon controller Posts. Je voudrais qu'il puisse soit créer un nouvel article et le sauvegarder, soit s'il détecte un id, l'éditer. C'est la technique qu'utilise Jonathan dans son tuto créer un site avec cakephp.
La création d'un nouvel article se passe très bien : les données sont enregistrées et la photo est uploadée dans un dossier créé si il n'existe pas. Par contre quand j'édite ce même article, les données s'affichent dans les inputs (sauf celui de l'image qui est le bouton enctype_data) et quand je valide il me créé un nouvel article au lieu de modifier l'existant.
Voici mon action edit de mon PostsController :
<?php
function admin_edit($id=null){
if ($this->request->is('put') || $this->request->is('post')) {
$data = $this->request->data'Post'];
$dir = IMAGES.'news';
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 en BDD
$success = $this->Post->save(array(
'name' => $data'name'],
'slug' => $data'slug'],
'photo' => $filename.$ext,
'content' => $data'content'],
'online' => $data'online']
));
if ($success) {
move_uploaded_file($data'file']'tmp_name'], $dir.DS.$filename.$ext);
$this->Session->setFlash("Le contenu a bien été édité","notif");
$this->redirect(array('action' => 'index'));
debug($this->request->data);
echo $dir.DS.$filename.$ext;
}else{
$this->Session->setFlash("L'image n'est pas au bon format",'notif', array('type' => 'error'));
}
}
elseif($id){
$this->Post->id = $id;
$this->request->data = $this->Post->read();
}
}
?>
2 questions, pourquoi quand j'édite je créé un nouvel article? Et comment fait on pour afficher le nom de l'image avec un input enctype quand on édite pour éviter de télécharger à nouveau l'image?
Merci d'avance pour votre préieuse aide! :)