bonjour,
voila mon problème est le suivant:
j'ai créé mon formulaire et mon action edit sur mon contrôleur mais le soucis c'est que quand je valide les seuls champs qui se sauvegarde sont le nom de l'image après son changement par le contrôleur et la date qui se sauvegarde uniquement a la date et heure actuelle et non a celle choisie dans le panneau déroulant (au passage j'ai un soucis avec les $this->flash, ils ne s'affichent pas)
voici la fonction edit
function edit($id = null){
$this->layout="admin";
$c = $this->Post->Category->find('list',array(
'recursive'=>-1,
'fields'=> array('id','title')
));
$this->set('cats',$c);
if(!empty($this->data)){
$this->Post->save($this->data);
$oldimg = $this->Post->field('image');
if(!empty($this->data'Post']'image']'tmp_name'])){
if(!empty($oldimg)){unlink(IMAGES.'posts'.DS.$oldimg); }
$filename = $this->Post->id.'-'.substr(md5(uniqid()),0,5).substr($this->data'Post']'image']'name'],-4);
move_uploaded_file($this->data'Post']'image']'tmp_name'],IMAGES.'posts'.DS.$filename);
$this->Post->saveField('image',$filename);
$this->flash('Votre post a été sauvegardé.','/posts');
}
$this->redirect($this->referer());
}
if(empty($this->data)){
$this->Post->id = $id;
$this->data = $this->Post->read();
}
}
et voici le formulaire
<?php
echo $form->create('Post',array('url'=>array('action'=>'edit'),'enctype'=>'multipart/form-data'));
echo $this->Form->input('Post.title',array('label' => 'Titre : <br/>'));
echo $this->Form->input('Post.content',array('label' => 'Contenu de l\'article : <br/>'));
echo $this->Form->input('Post.category_id',array('label' => 'Categorie : <br/>','options'=>$cats));
echo $this->Form->file('Post.image');
echo $this->Form->input('Post.id', array('type' => 'hidden'));
echo $this->Form->input('Post.date',array('label' => 'Date : <br/>',
'dateFormat' => 'DMY',
'timeFormat' => '24',
'minYear' => date('Y') - 10,
'maxYear' => date('Y') - 0));
echo $this->Form->end('Valider et envoyer');
?>
voila si quelqu'un peut m'aider a résoudre ce petit soucis :)
pour le array c'est bon j'ai trouvé c'était le champ image qu'il n'aimait pas car un nom image est déjà utilisé dans cake donc il fallait juste le nommer autrement et du coup sa sauvegarde bien tout :)
pour le flash c'est nomral, c'est
$this->Session->setFlash('message');
qu'il faut mettre et dans la vue :
echo $session->flash();
pour ta non sauvegarde des données... je sais pas est ce que ton modele est bien défini ? est ce qu'il se réfère à la bonne table... vérifie bien tout parce qu'avec un $this->Post->sav($this->data); ca devrait meme pas se poser de questions ^^
c'est bien pour ça que je pose la question je ne vois aucune erreur mais ça ne veux pas ça sauvegarde uniquement l'image, au niveau du modèle oui il est bien défini puisque le nom d'image lui se sauvegarde
le model
<?php
class Post extends AppModel{
var $name='Post';
var $belongsTo='Category';
}
?>
merci pour le flash() sa marche
met un debug($this->data) juste apres le if(!empty($this->data)), enleve la redirection regarde ce qu'il contient et deplace le jusqu'a ce que tu vois ou est le probleme, c'est ce que je fais quand je trouve pas la solution et souvent ca marche :)
bonne chance :)
il me montre bien mes tableaux avec une erreur en dessous **SQL Error: 1054: Unknown column 'Array' in 'field list'** le debug [code]Array ( [Post] => Array ( [title] => ma news de test [content] => azerty [category_id] => 1 [id] => 7 [date] => Array ( [day] => 04 [month] => 01 [year] => 2011 [hour] => 03 [min] => 45 ) [image] => Array ( [name] => 7-b829b.gif [type] => image/gif [tmp_name] => C:\wamp\tmp\phpA302.tmp [error] => 0 [size] => 2687 ) ) ) [/code]
fais voir la requete SQL généréée et a quelle ligne as tu mis le debug ? (on touche au bout ;) )
je l'ai mis juste apres le
if(!emptyempty($this->data)){
de la ligne 9 du edit
il me met
Query: UPDATE posts
SET title
= 'ma news de test', content
= 'vcnxng', category\_id
= 1, id
= 7, date
= '2011-01-14 13:58:00', image
= Array WHERE posts
.id
= 7
ce que je ne comprend pas c'est que fou cet array dans image alors que sa me sauvegarde pourtant bien le fichier (c'est d'ailleurs la seule chose qu'il sauvegarde