Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/06/2011, 14h47   #1
Membre régulier
 
Avatar de Romanops
 
Homme Romain Delecambre
Développeur Web
Inscription : octobre 2002
Messages : 215
Détails du profil
Informations personnelles :
Nom : Homme Romain Delecambre
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2002
Messages : 215
Points : 97
Points : 97
Envoyer un message via AIM à Romanops Envoyer un message via MSN à Romanops Envoyer un message via Yahoo à Romanops Envoyer un message via Skype™ à Romanops
Par défaut Afficher fichier PDF depuis une variable

Bonjour,

Je cherche à afficher un fichier PDF depuis une variable chaine.

voici le code du template (consultationSuccess.php)
Code :
1
2
3
4
5
<?php
 
echo $v_Pdf;
 
?>
Le code de l'action
Code :
1
2
3
4
5
6
7
8
public function executeConsultation(sfWebRequest $request)
{
  $this->v_IdDoc = $request->getParameter('IdDocument');
  $this->o_Document = new Document();
  $this->v_Pdf = $this->o_Document->recupere_Document($this->v_IdDoc);
  $this->setLayout(false);
  $this->getResponse()->setContentType('application/pdf');
}
Le code pour récupérer le PDF
Code :
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
  public function recupere_Document($p_IdDocument) {
 
    //On récupère la requête
    $v_Sql = $this->REQ_Document($p_IdDocument);
 
    //On lance la requête
    $v_Retour = $this->lance_Requete($v_Sql);
 
    //On vérifie que la requête s'est bien executée
    if($v_Retour)
    {  //si oui
 
      //debug("requête ok");
 
      //On vérifie qu'on a trouvé le document
      if($this->NbEnr>0)
      {
 
        //debug("document trouvé");
 
        //On récupère le Pdf
        $v_Pdf = $this->Data[0]["image"];  //"image" est le nom du champ dans la requête !!
 
      }
      else
      {
        //debug("Le document n'a pas été trouvé dans la base de données.");
        $v_Pdf = "";
      }
 
      //On libère la requête
      $this->libere_Requete();
 
    }
    else
    {  //si non
 
      //debug("Problème dans la requête => recupere_Document");
      $v_Pdf = "";
 
    }
 
    return $v_Pdf;
  }
Dans mon navigateur (firefox 4 sous windows xp), je lance l'url http://localhost:8059/frontend_dev.php/document/consultation/IdDocument/11, j'ai une page blanche, avec comme titre "11 (Objet application/pdf)" (11 étant l'identifiant passé en paramètre, donc l'id du document pdf dans ma base de données) et un message d'erreur provenant de Adobe Reader :
Citation:
Le fichier ne commence pas par '%PDF-'
Local/EWH
J'ai vérifié le déroulement de mon code (pour la méthode recupere_Document) la variable retournée ($v_Pdf) est bien remplie avec le contenu du fichier Pdf.
Je ne comprends pas d'où vient l'erreur...

J'ai fait plusieurs autres tests :
1) Je me suis dit que cela provenait du fait que je lançais l'exécution à partir de frontend_dev.php car il y a tous les codes correspondants aux débogages, j'ai donc testé en lançant la même URL mais avec index.php. Cela me donne une page blanche, sans titre et sans message d'erreur.

2) J'ai essayé de mettre un echo $this->v_Pdf directement dans le code de l'action, même si je sais que ce n'est pas correct, c'était surtout pour tester que ma variable était bien remplie et là mon fichier Pdf s'affiche normalement. Mais bon, il me semble que tous les echo/print doivent se trouver dans le fichier template, et non dans l'action !!

Est-ce que quelqu'un peut m'aider ?

Merci d'avance !
__________________
En vous remerciant, bonsoir.
Romanops est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 14h53   #2
Membre habitué
 
Avatar de Maerlyn31
 
Homme Baptiste Naudinat
Développeur Web
Inscription : mai 2011
Messages : 70
Détails du profil
Informations personnelles :
Nom : Homme Baptiste Naudinat
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 70
Points : 146
Points : 146
Si ton affichage est bon dans l'action, mais qu'il ne l'est plus une fois passé dans le template, alors c'est surement l'Output Escaping qui te met le bazard.

Essaie dans ton template de faire plutôt :

Code :
echo $sf_data->getRaw('v_Pdf');
(désactive l'output escaping, à utiliser avec précaution bien sur )
Maerlyn31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 15h04   #3
Membre régulier
 
Avatar de Romanops
 
Homme Romain Delecambre
Développeur Web
Inscription : octobre 2002
Messages : 215
Détails du profil
Informations personnelles :
Nom : Homme Romain Delecambre
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2002
Messages : 215
Points : 97
Points : 97
Envoyer un message via AIM à Romanops Envoyer un message via MSN à Romanops Envoyer un message via Yahoo à Romanops Envoyer un message via Skype™ à Romanops
Oh merci beaucoup ! Cela fonctionne en effet.

Par contre, en passant par l'index (http://localhost:8059/index.php/document/consultation/IdDocument/11) j'ai toujours une page blanche, est-ce que tu sais par hasard pourquoi ?

D'ailleurs, pour info, j'ai aussi une page blanche sur l'action index du module document (url : http://localhost:8059/index.php/document).
__________________
En vous remerciant, bonsoir.
Romanops est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 15h09   #4
Membre habitué
 
Avatar de Maerlyn31
 
Homme Baptiste Naudinat
Développeur Web
Inscription : mai 2011
Messages : 70
Détails du profil
Informations personnelles :
Nom : Homme Baptiste Naudinat
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 70
Points : 146
Points : 146
./symfony cc ?

Tu peux essayer de changer ton contrôleur frontal pour le rendre un peu plus bavard déjà. Dans ton fichier index.php, remplace :

Code :
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false);
par :

Code :
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', true);
il devrait te sortir les erreurs tout en restant en environnement de prod
Maerlyn31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 15h23   #5
Membre régulier
 
Avatar de Romanops
 
Homme Romain Delecambre
Développeur Web
Inscription : octobre 2002
Messages : 215
Détails du profil
Informations personnelles :
Nom : Homme Romain Delecambre
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2002
Messages : 215
Points : 97
Points : 97
Envoyer un message via AIM à Romanops Envoyer un message via MSN à Romanops Envoyer un message via Yahoo à Romanops Envoyer un message via Skype™ à Romanops
Super, ça marche en mode prod maintenant ! Merci maître !

Heu...
Citation:
./symfony cc ?
ça veut dire quoi ?
__________________
En vous remerciant, bonsoir.
Romanops est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 15h28   #6
Membre habitué
 
Avatar de Maerlyn31
 
Homme Baptiste Naudinat
Développeur Web
Inscription : mai 2011
Messages : 70
Détails du profil
Informations personnelles :
Nom : Homme Baptiste Naudinat
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 70
Points : 146
Points : 146
la commande "cc" pour "clear cache" ... quand tu as une différence d'affichage entre le mode prod et le mode dev la plupart du temps ça vient du cache, mais bon je suppose que tu avais du le faire ... heureux d'avoir pu t'aider en tout cas
Maerlyn31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 15h37   #7
Membre régulier
 
Avatar de Romanops
 
Homme Romain Delecambre
Développeur Web
Inscription : octobre 2002
Messages : 215
Détails du profil
Informations personnelles :
Nom : Homme Romain Delecambre
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2002
Messages : 215
Points : 97
Points : 97
Envoyer un message via AIM à Romanops Envoyer un message via MSN à Romanops Envoyer un message via Yahoo à Romanops Envoyer un message via Skype™ à Romanops
ah ok, en ligne de commande... non je ne connaissais pas mais cela venait du fait que je n'avais pas activé le mode prod (changer la ligne dans le contrôleur frontal). Désolé, je suis un débutant expérience = 1 semaine ^^'

En tout cas, merci encore ! J'ai mis le sujet en Résolu
__________________
En vous remerciant, bonsoir.
Romanops est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h52.


 
 
 
 
Partenaires

Hébergement Web