Bonjour,
J'ai dernièrement suivi des tutoriel sur cakephp et j'ai commencer a mettre en place une nouvelle partie sur mon site en local
Le problème que je rencontre c'est la sauvegarde en base de donnée et la copie des images envoyé a parti de mon formulaire
Ci-dessous les different fichier de mon projet
Mon controller :
Mon model
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86 <?php App::uses('AppController', 'Controller'); class GamesController extends AppController { public $helpers = array('Text','Form','Html', 'Session', 'Date'); public $components = array('RequestHandler','Img'); public $uses = array('Game'); public $categorie = 'Jeux'; function index(){ $d['games'] = $this->Paginate('Game',array('online'=>1)); $this->set($d); } /** * parie avec les prefix **/ function admin_index(){ $this->paginate = array('Game'=> array( 'limit'=>20 )); $d['games'] = $this->Paginate('Game',array('type'=>'jeux','online'>=0)); $this->set($d); } function admin_edit($id){ if($this->request->is('put') || $this->request->is('post')){ $data = $this->request->data['Game']; if($this->Game->save()){ $this->Session->setFlash("Le contenu a bien été modifié","notif"); $this->redirect(array('action'=>'index')); } // Création d'un dossier $dir = IMAGES.date('D'); if(!file_exists($dir)) mkdir($dir,0777); // 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->Game->save(array( 'name' => $data['name'], 'content'=>$data['content'], 'url' => date('D').'/'.date('m').'/'.$filename.$ext, 'picture'=>$data['picture'], 'type'=>$data['type'], 'sponsor'=>$data['sponsor'], 'user_id' => $Session['id'] )); if($success){ move_uploaded_file($data['file']['tmp_name'],$dir.DS.$filename.$ext); //On parcourre les different de format de media 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 au bon format","notif",array('type'=>'error')); } } $d = array(); $d['games'] = $this->Game->find('all',array( 'conditions' => array('user_id' => $Session['id']) )); $d['formats'] = Configure::read('Media.formats'); $this->set($d); } function admin_delete($id){ $this->Session->setFlash("Le jeu a bien été supprimer",'notif'); $this->Game->delete($id); $this->redirect($this->referer()); } }
La structure de ma base de donnée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 <?php class Game extends AppModel { public $recursive = -1; public $validate =array( 'name' => array( array( 'rule' =>'alphanumeric', 'required' =>true, 'allowEmpty' => false, 'message' => "Ce titre est déja utilisé, merci de saisir un nouveau titre"), 'url' => array( 'rule' => '/^.*\.(jpg|png|jpeg)$/', 'allowEmpty' => true, 'message' => "Le fichier n'est pas une image valide" ) )); /** * Permet de générer / récupere un brouillon **/ public function getDraft($type){ $game = $this->find('first',array( 'conditions' => array('online' => -1, 'type' => $type) )); if(empty($game)){ $this->save(array( 'type' => $type, 'online' => -1 ),false); $game = $this->read(); } $game['game']['online'] = 0; return $game; } public function afterfind($data){ foreach ($data as $k => $d){ if(isset($d['Game']['url']) && isset($d['Game']['type']) && $d['Game']['type']=='image'){ $filename = implode('.',array_slice(explode('.',$d['Game']['url']),0,-1)); foreach (Configure::read('Media.formats') as $kk=>$vv){ $d['Game']['url'.$kk] = $filename.'_'.$kk.'.jpg'; } } $data[$k] = $d; } return $data; } public function beforeDelete(){ $file = $this->field('url'); $f = explode('.',$file); unlink(IMAGES.DS.$file); $ext = '.'.end($f); $file = implode('.',array_slice($f,0,-1)); foreach(glob(IMAGES.DS.$file.'_*.jpg')as $v){ unlink($v); } return true; } } ?>
pour le momment j'ai des message d'erreur suivants
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 -- -- Structure de la table `games` -- CREATE TABLE IF NOT EXISTS `games` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `content` mediumtext, `url` varchar(255) DEFAULT NULL, `picture` varchar(255) DEFAULT NULL, `type` varchar(25) NOT NULL DEFAULT 'manga', `sponsor` text, `user_id` int(11) NOT NULL, `online` int(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `user_id` (`user_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Je vous remerci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Notice (8): Undefined index: file [APP\Controller\GamesController.php, line 44] Notice (8): Undefined variable: Session [APP\Controller\GamesController.php, line 57] Notice (8): Undefined variable: Session [APP\Controller\GamesController.php, line 74]
Runcafre91
Partager