Bonjour,
Je travaille sur un Helper qui permet de générer des QR Code en png, svg et eps et les télécharger. Mon Helper est basé sur phpqrcode .
Lorsque le flux de données (png, svg ou eps) est généré dans le Helper, je dois l'envoyer à la vue et forcer le téléchargement.
Par exemple:
Dans le Helper:
App::import('Vendor', 'QRGenerator.phpqrcode'.DS.'qrlib');
class QRHelper extends AppHelper{
function text(){
QRcode::png("Mon text exemple");
}
}
Dans la vue:
$this->QR->text();
ça marche pas pour moi, même lorsque j'ajoute des echo. Est ce que quelqu'un a une idée ?
Merci d'avance.
En ajoutant ça au controlleur j'ai pu télécharger les png
$this->response->type('Content-Type: image/png');
$this->response->download('qrcode.png');
Mais pour les svg et eps, elle me génère un fichier vide !!
J'ai trouvé la solution, pour les fichiers svg et eps je dois ajouter un echo avant la fonction
echo QRcode::svg("Mon text exemple");
Mais pour les png non ;)
Salut RafikHaceb,
Tu as essayé de faire un debug de $this->QR->text() pour voir ce que ça te retourne??
Je suis pas un expert Cakephp mais je suis assez surpris de la construction de ton appli QR code.
Un Helper est plutôt utilisé pour générer des vues partagés non?
(cf. CookBook "Ils contiennent la logique de présentation qui est partagée entre plusieurs vues")
La tu essaies, il me semble, de générer une image que tu renvoi ensuite vers ta vue...
Pourquoi ne pas utiliser un Component pour celà?
Je fais le lien avec un système de Captcha que j'ai mis en place récemment.
Mon image captcha est générer par un Component, stocker dans une variable puis récupérer par un Helper qui est sera appelé par les vues qui en auront besoin...
Le Helper récupère l'image de la façon suivante:
$this->Html->image($this->Html->url());
Je ne sais pas si ça a pu t'aider, en tout cas c'est une bonne idée de créer une fonction de génération de QR code.
Bon dèv'!
@B-Art : J'essaye pas d'afficher l'image dans la vue,la bibliothèque PHP que j'utilise s'occupe de la création de l'image et elle se charge d'envoyer le header. Le problème est lorsque je l'utilise avec CakePHP, j'ai pas pu forcer le téléchargement juste aprés la génération de l'image.
Et en essayant comme ceci:
// Ajouter un type
$this->response->type(array('svg' => 'image/svg+xml'));
// Configurer la réponse de Type de Contenu pour svg.
$this->response->type('svg');
$this->response->download('qrcode.svg');
??