Bonjour,
J'ai suivi attentivement les TPs sur la formation cakePhp mais je me retrouve face à un problème qui me bloque depuis plusieurs jours..
Donc j'ai un membre qui peut uploader un avatar, voici mon systeme qui fonctionne :
Controller Users :
<?php
App::uses('AppController','Controller');
class UsersController extends AppController{
public function account(){
if (!empty($this->request->data)) {
$this->request->data'User']'id'] = $this->Auth->user('id');
$this->User->create($this->request->data);
if($this->User->validates()){
$this->User->create();
$this->User->save($this->request->data, true, array('avatarf','password','password2'));
//Upload avatar utilisateur
if(!empty($this->data'User']'avatarf']'tmp_name']))
{
$dest = IMAGES . 'avatars' . DS . ceil($this->User->id/1000);
if(!file_exists($dest))
{
mkdir($dest,0777,true);
}
//nom image
$dest .= DS . $this->User->id . '.jpg';
debug($dest);
move_uploaded_file($this->request->data'User']'avatarf']'tmp_name'], $dest);
$this->User->saveField('avatar', 1);
}
$user = $this->User->read();
$this->Auth->login($user'User']);
$this->Session->setFlash("Vos informations ont bien été modifiées","flash", array('class' => 'success'));
}
}else{
$this->User->id = $this->Auth->user('id');
$this->request->data = $this->User->read();
}
}
Le problème vient quand je veux faire intervenir la librairie Imagine, en effet si je rajoute la ligne ci dessous sous mon debug($dest):
require APP . 'Vendor' . DS . 'imagine.phar';
, mon upload d'image ne se fait plus "instantanément", je veux dire par là qu'après avoir soumis mon formulaire ma page devient blanche et Chrome me dit:
"Impossible d'afficher la page Web, car le serveur n'a envoyé aucune donnée.
blablabla
Code d'erreur : ERR_EMPTY_RESPONSE."
Et si je recharge encore la page là mon nouvel avatar apparait ... une idée ?
Pourtant si je fais un debug(get_defined_constant()), ça me retourne
'APP' => '/Applications/MAMP/htdocs/Monsite copy 2/app/',
Donc Imagine est bien chargé normalement non ?
J'ai déjà eu ce problème et est-ce que tu la essayer avec d'autre navigateur? comme par exemple Safaris. Je sais pas mais si tu as trouver une solution à ton problème j'aimerais le savoir. Car j'ai encore ce problème sur mon site web.
Bonjour xenos92. Si tu veux ne pas trop t'embêter, tu peux faire avec un Plugin, qui lui même a été élaboré par Grafikart et tu pourras regarder le codage pour mieux comprendre le système. Il y a même plusieurs Plugin pour l'upload de la part de Grafikart : [url=https://github.com/Grafikart/CakePHP-Upload]Plugin Upload[/url] : Permet l'upload unitaire de fichiers [url=https://github.com/Grafikart/CakePHP-Media]Plugin Media[/url] : Permet l'upload de fichiers, avec possibilité de définir le nombre de fichiers autorisés à l'upload pour chaque modèle dont le Plugin est utilisé (plugin le plus flexible des 2)** Par contre, je ne sais pas quelle version de CakePHP tu utilises, mais je sais qu'il y a des constantes propres à CakePHP qui ont changées, dont celle pour le root des images par exemple. En espérant t'avoir aidé, je te souhaite une bonne journée.