Как получить представление шаблона Blade в виде необработанной строки HTML?

Мне нужен HTML-код моего шаблона Blade в виде строки.

Я собираюсь использовать эту строку HTML для создания из нее PDF-файла.

На данный момент у меня есть потоковая передача Blade в качестве ответа браузерам.

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

Как я могу получить необработанную строку HTML из шаблона лезвия?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
58
0
52 475
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете вызвать в render() на view.

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

См. Исходный код View для получения дополнительной информации.

У меня возникла ошибка неопределенной переменной при использовании с compact. Любая идея?

Jonjie 07.10.2019 04:02

@Jonjie, это говорит о том, что одна из переменных, которые вы пытаетесь использовать для compact, не определена или выходит за рамки.

fubar 07.10.2019 08:29

Пожалуйста, посмотрите этот код: $user = User::first();return view('users.edit', compact('user'))->render();

Jonjie 07.10.2019 08:39

@Jonjie - Я не вижу ничего плохого в том, что вы опубликовали. Должно быть что-то еще не так. Может быть, задать новый вопрос и опубликовать весь соответствующий код?

fubar 08.10.2019 00:58
    <!-- 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']);

отредактировал

<!-- 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); -->

чтобы использовать snappy, вам необходимо следовать инструкциям: 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 : вернуть массив (

'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(),

    
),

);

Спасибо за попытку помочь, но это не имеет словесного объяснения. Чего вы пытались достичь. Пожалуйста, улучшите свой ответ.

Yevgeniy Afanasyev 01.05.2019 02:43

Это работает для возврата в качестве ответа от контроллера. Но для того, чтобы получить эту HTML-строку в переменной, вам нужно будет использовать $ html = view ('приветствие', ['name' => 'James']);

Shyam Achuthan 26.07.2019 01:56

$ html = view ('приветствие', ['name' => 'James']); это даст вам HTML-код, отображаемый как строку в переменной $ html. А затем вы можете использовать переменную $ html для создания PDF-файла. Я сделал это, и он отлично работает

Amina Darwish 25.03.2020 11:03

но в вашем примере нет переменной $ html

Yevgeniy Afanasyev 27.08.2020 04:22

@YevgeniyAfanasyev Я отредактировал свой пример $html=view('greeting', ['name' => 'James']);

Amina Darwish 27.08.2020 08:23

там написано Class snappy.pdf.wrapper does not exist

Yevgeniy Afanasyev 28.09.2020 06:19

@YevgeniyAfanasyev Отредактировал свой ответ, добавил инструкцию по установке snappy.pdf.wrapper

Amina Darwish 29.09.2020 07:33

@AminaDarwish. Чем вам редактировать свой ответ. Я думаю, что другой ответ лучше. Он дает единственную функцию для достижения запрошенного результата без использования каких-либо дополнительных пакетов.

Yevgeniy Afanasyev 30.09.2020 08:06

предыдущий ответ с использованием Render () при применении к представлению будет генерировать только соответствующий необработанный html и сохранять результат в переменной. Он не сгенерирует PDF-файл для вас. как вы упомянули в своем вопросе <<< Я собираюсь использовать эту строку HTML для создания из нее PDF. >>> Мой ответ показывает, как получить необработанный HTML, а затем способ использовать его для создания PDF.

Amina Darwish 01.10.2020 09:16

Спасибо за ваш комментарий. Это моя ошибка, я должен упомянуть, что я уже использую пакет github.com/dompdf/dompdf для преобразования html в pdf. Я полностью рекомендую вам dompdf - он намного популярнее, чем barryvdh / laravel-snappy. Кроме того, он позволяет создавать pdf-файлы в виде строк, а затем в виде строки его можно прикрепить к электронной почте, не сохраняя в виде файлов.

Yevgeniy Afanasyev 20.10.2020 23:42

Большое спасибо за ваше предложение. У меня также есть большой опыт работы с snappy. прежде чем выбрать snappy, я поискал и нашел много людей, предпочитающих snappy dompdf github.com/barryvdh/laravel-snappy/issues/226, я попробую dompdf, сравню и дам вам знать результаты.

Amina Darwish 22.10.2020 14:05

Другие вопросы по теме