Partage
  • Partager sur Facebook
  • Partager sur Twitter

HTML et balise blade en base de donnée

comment faire pour les afficher

    20 novembre 2019 à 14:58:12

    Bonjour à tous, 

    j'utilisa laravel 5.2 (que je ne peut pas faire evoluer pour des raison technique imposé).

    j'ai un formulaire de création de texte d'email qui utilise tinymce pour enregistrer des balise html en base de donnée.

    j'ai ajuter une personalisation pour pouvoir afficher les nom et prenom du destinataire par exemple :

    Bonjour {{ $destinataire->name}}  

    puis pour envoyer les email : 

     Mail::send('emails.templates.basic', ['expediteur' => $expediteur, 
    'destinataire' => $destinataire , 'content' => $email->body],
    function ($m) use ($email, $destinataire) {
                    $m->from(Auth::user()->email, 'ASSSCII');
        
                    //$m->to($destinataire->email, $destinataire->name);
                    $m->to('fairouz.boussadia-extern@renault.com', 'moi');
                    
                    $m->subject($email->sujet);
                });



    je reçoit mon mail tout est bon mais les variable qui sont dans le body du mail enregistrer en base de donnée ne sont pas interpreter.

    J'ai chercher sur google comment je peut les remplacer avant de le passer a mon template du mail mais j'ai pas trouver ou j'utilise pas les bon mot clé pour cherhcer.

    Quelqu’un aurai une idée ???

    Merciiii



    -
    Edité par gatinamed 20 novembre 2019 à 15:00:19

    • Partager sur Facebook
    • Partager sur Twitter
      20 novembre 2019 à 15:08:59

      Salut,

      je pense que c'est Laravel qui s'occupe du remplacement des variables dans le template, comme le moteur twig le fait pour SF, donc je pense qu'il faudrait réfléchir sur un système qui s'intercale avant le lancement du mail et après l'interprétation du template.

      Je te laisse chercher je t'ai déjà fourni un GROS indice :D

      • Partager sur Facebook
      • Partager sur Twitter
        20 novembre 2019 à 15:23:27

        Merci pour la réponse rapide, 

        je me suis peut être mal exprimer, alors je vais reformuler :

        voici le template de mon email vue emails.templates/basic :

        <style type="text/css">
            .header {
              background: #8a8a8a;
            }
            .header .columns {
              padding-bottom: 0;
            }
            .header p {
              color: #fff;
              margin-bottom: 0;
            }
            .header .wrapper-inner {
              padding: 20px; /*controls the height of the header*/
            }
            .header .container {
              background: #8a8a8a;
            }
            .wrapper.secondary {
              background: #f3f3f3;
            }
        </style>
            <!-- move the above styles into your custom stylesheet -->
            
            
        <wrapper class="header" bgcolor=_"#8a8a8a">
            <container>
            <row class="collapse">
                <columns small="6" valign="middle">
                <img src="/img/renault_english_logo_desktop.png">
                </columns>
                <columns small="6" valign="middle">
                <p class="text-right">ASSSCII</p>
                </columns>
            </row>
            </container>
        </wrapper>
        
        <container>
        
            <spacer size="16"></spacer>
            
            <row>
            <columns>
                
             
                
                <p> {!! $content !!} </p>
                
            </columns>
            </row>    
        </container>

        la variable $content est bien remplacé par le body de mon mail qui lui contien une autre variable qui elle n'est pas remplacé

        en l'occurence 

        $email->body = "Bonjour {{$destinataire->name}} ....".



        ce que je veux c'est faire interpreter ce body par blade et mettre le retour html dans une variable que je pourrai passer a mon template mail déja interprété.

        Mail::send('emails.templates.basic', ['expediteur' => $expediteur,
        'destinataire' => $destinataire , 'content' => $email->body],
        function ($m) use ($email, $destinataire) {
                        $m->from(Auth::user()->email, 'ASSSCII');
             
                        //$m->to($destinataire->email, $destinataire->name);
                        $m->to('fairouz.boussadia-extern@renault.com', 'moi');
                         
                        $m->subject($email->sujet);
                    });

        dans le code qui précède j'ai essayer d'envoyer cette variable $destinataire en meme temps que mon body au template mais cel n'a pas fonctionné.

        j'espère que j'ai été plus claire.

        merciiiii

        • Partager sur Facebook
        • Partager sur Twitter
          20 novembre 2019 à 16:38:38

          oui enfin là tu confonds PHP avec $destinataire OO (et donc concaténé) et ton template, l'objet n'a rien à faire là:

          SOIT c'est PHP

          <?php
          $email->body = "Bonjour ".$destinataire->name." ....";


          SOIT c'est le template:

          "Bonjour {{ destinataire.name }} ....."

          Mais pas un mélange ;)

          • Partager sur Facebook
          • Partager sur Twitter
            21 novembre 2019 à 10:13:57

            bonjour, 

            oui en faite mon body c'est ce que j'enregistre en base de donnée je l'enregistre e forme de template dans l'espoire que {{ $destinataire->name }} soit remplacer par blade quand je le passe a mon template d'email et que en même temps j’envoie mon objet $destinataire mais ce n'est pas le cas , et c'est de la que viens mon problème.

            et la syntaxe en Template Blade est bien "Bonjour {{ $destinataire->name }}"

            je rappel que je travail avec Laravel et non SF

            en faite il y a une solution qui consiste à enregistrer en base de donnée un code du genre "Bonjour %NAME%" et de faire un str_replace avant de l'envoyer à mon template de base de l'email. mais j'aurai aimer ne pas faire plein de str_replace et d'envoyer toute les données susceptibles d’être utilisé dans un template c'est plus dinamique je trouve.

            Si il n'y a pas de solution je vais me rabattre sur celle ci.

            ce que je cherche c'est une façon de pouvoir recuperer un template dans un controller et de lui passer les variable qu'il doit remplacer et ensuite de le passer a mon mail.

            mercii

            • Partager sur Facebook
            • Partager sur Twitter
              21 novembre 2019 à 10:21:54

              Tu es sûr pour ton objet ? J'ai regardé rapido la doc laravel,

              Ah si mais il est planqué ^^

              Tu as regardé (affiché) ton template AVANT l'envoi et la transfo par laravel, peut-être qu'il est protégé en entrée de DB non ??? Ce serait assez logique, et tu te retrouves avec un template modifié par les protection PDO (par exemple) et non utilisable tel quel ;)

              -
              Edité par christouphe 21 novembre 2019 à 10:24:25

              • Partager sur Facebook
              • Partager sur Twitter
                21 novembre 2019 à 10:27:05

                re ,

                c'est une piste à suivre , je vais voir et je vous dit ce qu'il en ai .

                merciii pour votre aide

                • Partager sur Facebook
                • Partager sur Twitter

                HTML et balise blade en base de donnée

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown