IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Afficher fichier pdf sous symfony 4.2.8 ( migration symfony 3 vers symfony 4)


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif

    Inscrit en
    Octobre 2012
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 94
    Billets dans le blog
    1
    Par défaut Afficher fichier pdf sous symfony 4.2.8 ( migration symfony 3 vers symfony 4)
    Bonjour,

    J'ai migré mon projet sous Symfony 3.3.6 vers Symfony 4.2.8 et j'ai mon fichier pdf (mon cv ) qui ne s'affiche pas ! L'erreur :
    Service "kernel" not found: even though it exists in the app's container, the container inside "App\Controller\MoncvController" is a smaller service locator that only knows about the "doctrine", "form.factory", "http_kernel", "parameter_bag", "request_stack", "router", "security.authorization_checker", "security.csrf.token_manager", "security.token_storage", "serializer", "session" and "twig" services. Try using dependency injection instead.
    J'ai essayé à maintes reprises de trouver la solution via le web mais en vain ! Alors je me tourne vers vous pour trouver des idées.
    Mon controller :
    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
    <?php
     
    namespace App\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    use Symfony\Component\Routing\Annotation\Route;
     
    // Import the BinaryFileResponse
    use Symfony\Component\HttpFoundation\BinaryFileResponse;
     
     
     
    class MoncvController extends AbstractController
    {
     
        /**
         * @Route("/moncv", name="moncv")
         */
        public function index()
        {
            // i.e Sending a file from the resources folder in /web
            // in this example, the TextFile.txt needs to exist in the server
            $publicResourcesFolderPath = $this->get('kernel')->getRootDir() . '/../public/images/';
            $filename = "moncv.pdf";
     
            // This should return the file located in /mySymfonyProject/web/public-resources/TextFile.txt
            // to being viewed in the Browser
            return new BinaryFileResponse($publicResourcesFolderPath.$filename);
           ;
        }
    }
    Merci d'avance .

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    en SF4 les services (tes services et ceux du noyau) sont privés.on ne peut plus accéder aux services en faisant $this->get('kernel')). On procède par injection de dépendance.
    Code yaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # config/services.yaml
    services:
        _defaults:
            autowire: true      # Automatically injects dependencies in your services.
            autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
            bind:               # ici tu définis les arguments scalaires(string, int, bool) que tu passeras à tes services(dans ton cas le cas le controlleur)
                $publicResourcesFolderPath: '%kernel.project_dir%/public/images/'

    dans le contrôleur,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function index( string $publicResourcesFolderPath )
    {
       $filename = "moncv.pdf"; 
      //force le navigateur à afficher en fonction de l'extension du fichier ( SF4)
      // return $this->file($publicResourcesFolderPath.$filename); //syntaxe réduite
       return new BinaryFileResponse($publicResourcesFolderPath.$filename);
    }

  3. #3
    Membre actif

    Inscrit en
    Octobre 2012
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 94
    Billets dans le blog
    1
    Par défaut
    Salut,

    Merci Armel18 , mon pdf s'affiche parfaitement après les changements que vous avez apporté ! Je vais essayer d'apprendre un peu plus sur les services sous SF 4.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/07/2010, 15h32
  2. lancer un lien vers un fichier .pdf sous VB.net
    Par ririrourou dans le forum VB.NET
    Réponses: 7
    Dernier message: 11/09/2009, 11h14
  3. [Upload] upload fichier pdf sous Firefox 3.0.4
    Par Emilie012 dans le forum Langage
    Réponses: 9
    Dernier message: 17/11/2008, 22h50
  4. [SOLARIS] Lire des fichiers PDF sous SOLARIS
    Par StyleXP dans le forum Solaris
    Réponses: 4
    Dernier message: 15/11/2006, 19h57
  5. [FPDF] Pb pour ouvrir un fichier pdf sous IE ?
    Par wormseric dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 09/11/2006, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo