CakePHP-Fr.Org

Forum francophone du Framework CakePHP

Vous n'êtes pas identifié.

#1 05-03-2013 15:50:55

ecl21
Chouquette
Date d'inscription: 05-03-2013
Messages: 1

Probleme validations Plugin Upload josegonzalez

Bonjour à tous,
je viens ici dans l'espoir d'avoir un peu plus de renseignements concernant le plugin upload de josegonzalez
(https://github.com/josegonzalez/upload)
Je sais qu'il y a pas mal de discussion à propos de ce plugin mais je rencontre un problème concernant la validation des règles du plugin.

Voici le code du controller photos:

Code: php

  1. class PhotosController extends AppController{
  2. function admin_view($id = null){
  3. if ($this->request->is('post')) {
  4.  
  5.       $this->Photo->set($this->request->data);   
  6.     if($this->Photo->validates()){
  7.  
  8.         $dossier = WWW_ROOT.'files\image'.DS;
  9.         $fichier = $this->request->data['Photo']['image']['name'];
  10.         $token = uniqid();
  11.         $extension = strrchr($fichier, '.');
  12.          
  13.         $this->request->data['Photo']['image']['name'] = $token.$extension;
  14.  
  15.  
  16.             if ($this->Photo->save($this->request->data)) {
  17.              
  18.                 rename($dossier.$fichier, $dossier.$token.$extension);
  19.                   $this->Session->setFlash('Votre image a été ajoutée.','notif',array('type'=>'success'));
  20.                   $this->redirect($this->referer());
  21.             }else {          
  22.                   $this->Session->setFlash('Erreur lors de l\'upload.','notif',array('type'=>'error'));
  23.                   $this->redirect($this->referer());
  24.             }
  25.  
  26.           }else {
  27.                 $this->Session->setFlash('Veuillez corriger vos erreurs.','notif',array('type'=>'error'));
  28.                 $this->redirect($this->referer());
  29.           }
  30. }
  31. }
  32. }

Voici la table photos:

Code: php

  1. CREATE TABLE IF NOT EXISTS `photos` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `username` varchar(20) NOT NULL,
  4.   `image` varchar(255) NOT NULL,
  5.   `photo_dir` varchar(255) NOT NULL,
  6.   `size` varchar(255) NOT NULL,
  7.   `type` varchar(255) NOT NULL,
  8.   PRIMARY KEY (`id`)
  9. )

Voici le code du model Photo :

Code: php

  1. class Photo extends AppModel {
  2.   var $name = "Photo";
  3.  
  4.     public $actsAs = array(
  5.         'Upload.Upload' => array(
  6.             'image' => array(
  7.                 'fields' => array(
  8.                     'dir' => 'photo_dir'
  9.                 ),
  10.                 'mimetypes' => array('image/png'),
  11.                 'thumbnailMethod' => 'php',
  12.                 'path' =>'{ROOT}webroot{DS}files{DS}{field}{DS}',
  13.                 'pathMethod' => 'flat',
  14.                 'thumbnailPath'     => '{ROOT}webroot{DS}files{DS}{field}{DS}thumbs{DS}',
  15.                 //'extensions' => array('.png'=>'.png'),
  16.                 'maxSize' => 1048576,
  17.                 'thumbnailSizes' => array(                    
  18.                     'thumb' => '126x126'
  19.                 )
  20.             )
  21.         )
  22.     );
  23.  
  24.     public $validate = array(
  25.         'image' => array(
  26.             'rule' => array('isValidMimeType', array('image/png')),
  27.             'message' => 'File is not a pdf or png'
  28.         ),
  29.         'image' => array(
  30.             'rule' => array('isValidExtension', array('png')),
  31.             'message' => 'File does not have a pdf, png, or txt extension'
  32.         ),
  33.         'image' => array(
  34.             'rule' => array('isBelowMaxSize', 1048576),
  35.             'message' => 'File is larger than the maximum filesize'
  36.         )
  37.     );
  38.  
  39. }

Voici le code de la vue :

Code: php

  1. <?php echo $this->Form->create('Photo', array('type' => 'file')); ?>                  
  2. <?php echo $this->Form->input('image', array('type' => 'file','label'=>'Choisissez une image :')); ?>
  3.                  
  4. <?php echo $this->Form->input('photo_dir', array('type' => 'hidden','value'=>$id)); ?>
  5. <?php echo '<span style="color:#FF0000;">(Extensions .jpg .png ou .gif autorisées, taille max. 1Mo)</span>';
  6. echo "<br><br>";
  7. echo $this->Form->submit('Envoyer',array('class'=>'btn btn-large btn-inverse','id'=>'fat-btn','data-loading-text'=>'Chargement...')); ?>
  8. <?php echo $this->Form->end(); ?>

Le but est très simple, je veux juste uploader une photo dans un répertoire, cela fonctionne parfaitement mais les règles de validations ne fonctionnent pas, j'ai pourtant bien suivi le tuto sur le site de josegonzalez, mais j'ai du zapper quelque chose...
Les trois régles présentent ont été testé à part mais rien à faire, le fichier est quand méme uploader méme si ce fichier dépasse 1Mo ou qu'il soit d'une autre extension que la règle.

Si vous trouvez le moindre doute sur mon code, n'hésitez pas, j'aimerais quand méme résoudre le problème.

Merci big_smile

Hors ligne

 

Pied de page des forums

Propuls� par FluxBB
Traduction par FluxBB.fr