96 votes

Comment obtenir la vue du modèle Blade sous forme de chaîne HTML brute ?

J'ai besoin du HTML de mon modèle Blade sous forme de chaîne.

Je vais utiliser cette chaîne HTML pour générer un PDF à partir de celle-ci.

Pour l'instant, je dispose de Blade streaming comme réponse aux navigateurs.

 return view('users.edit', compact('user'));

Comment puis-je obtenir la chaîne HTML brute du modèle de lame ?

230voto

fubar Points 10111

Vous pouvez appeler render() sur le view .

$html = view('users.edit', compact('user'))->render();

Voir le View code source pour plus d'informations.

0 votes

J'ai obtenu une erreur de variable non définie en l'utilisant avec compact . Une idée ?

1 votes

@Jonjie, cela suggère que l'une des variables que vous essayez de compact est indéfini ou hors de portée.

0 votes

Veuillez voir ce code : $user = User::first(); return view('users.edit', compact('user'))->render();

3voto

Pri Nce Points 57

C'est la solution parfaite pour télécharger/convertir un fichier lame en HTML.

$view = view('welcome')->render();
header("Content-type: text/html");
header("Content-Disposition: attachment; filename=view.html");
return $view;

1voto

Amina Darwish Points 1
    <!-- View stored in resources/views/greeting.blade.php -->
    <html>
        <body>
            <h1>Hello, {{ $name }}</h1>
        </body>
    </html>

<!-- In your php controller  -->

    return view('greeting', ['name' => 'James']);

édité

<!-- In your PHP controller You can add html variable , and then use it for example to print PDF -->

$html=view('greeting', ['name' => 'James']);

 $pdf = \App::make('snappy.pdf.wrapper');
 $output = $pdf->loadHTML($html)->output();

$headers = [
            'Content-Type' => 'application/pdf',
            'Content-Disposition' => 'inline; filename="' . $filename . '"',
        ];

\Storage::put("pdfs/$filename", $output);
return response()->download(storage_path("app\\pdfs\\$filename"), $filename . '.pdf', $headers);

<!-- or return \Response::make($output, 200, $headers); -->

pour utiliser snappy vous devez suivre les instructions : https://github.com/barryvdh/laravel-snappy

1. Download wkhtmltopdf from here https://wkhtmltopdf.org/downloads.html

2. Package Installation: composer require barryvdh/laravel-snappy

3. In (app.php) providers array add Barryvdh\Snappy\ServiceProvider::class,

4. In (app.php) aliases array add 'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class, 'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class,

5. Run php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider"

6. In (snappy.php) edit the binary path based on your installation path for wkhtmltopdf For me it is the following : Retourner le tableau (

'pdf' => array(
    'enabled' => true,
    // base_path('vendor\wemersonjanuario\wkhtmltopdf-windows\bin\64bit\wkhtmltopdf'),
    'binary'  =>'"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf"',
    'timeout' => false,
    'options' => array(),
    'env'     => array(),
),
'image' => array(
    'enabled' => true,
    'binary'  =>'"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf"',
    'timeout' => false,
    'options' => array(),
    'env'     => array(),

),

) ;

2 votes

Merci d'essayer d'aider, mais cela n'a pas d'explication en mots. Qu'essayiez-vous d'atteindre ? Veuillez améliorer votre réponse.

1 votes

Cela fonctionne pour le retour en tant que réponse du contrôleur. Mais pour obtenir cette chaîne HTML dans une variable, vous devrez utiliser $html = view('greeting', ['name' => 'James']) ;

0 votes

$html = view('greeting', ['name' => 'James']) ; ceci vous donnera le html rendu sous forme de chaîne dans la variable $html. Et ensuite vous pouvez utiliser la variable $html pour créer le PDF. J'ai fait cela et cela fonctionne parfaitement

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X