Как экспортировать файл PDF в Laravel - PullRequest
0 голосов
/ 21 мая 2019

У меня два взгляда.Один из них - показать представление фильтра (вид 1).Другой способ - получить данные из представления фильтра, а затем экспортировать их в файл PDF (представление 2).Это означает, что при нажатии «Печать» файл PDF будет экспортирован, а представление 2 будет отображать файл PDF с данными представления 1.

. Теперь я не знаю, как получить данные из представления 1 и показать вВид 2.

Вот мой код:

Вид1:

<form method="get">
    <select name="type" onchange="this.form.submit()">
        <option value="">All types</option>
        @foreach ($types as $item)
            <option value="{{ $item->id }}" @if ($request->type == $item->id) selected @endif>{{ $item->name }}</option>
        @endforeach
    </select>
</form>
<br>
<a href="pdf">Print</a>
<br><br>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>Content</th>
            <th>Type</th>
        </tr>
        @foreach ($data as $q)
            <?php $typeName = App\Type::find($q->type_id);?>
            <tr>
                <td>{{ $q->id }}</td>
                <td>{{ $q->content }}</td>
                <td>{{ $typeName->name }}</td>
            </tr>
        @endforeach
    </table>

Вид2: Это представление будет отображаться в PDF-файле, но я не знаю, как получить значение изView1

<table border="1">
    <tr>
        <th>ID</th>
        <th>Content</th>
        <th>Type</th>
    </tr>
</table>

FilterController:

public function getFilter(Request $request){
        $types = Type::all();
        $model = Question::where('id', '>', 0)->with('types');

        if (isset($request->type))
            $model = $model->where('type_id', $request->type);
        $data = $model->paginate(15)->appends(request()->query());

        return view('View1', compact( 'data', 'request', 'types'));
    }

PrintController:

public function getValueFromView2(){
//I've to write something to get value from View1
}
public function getPDF(){
        $pdf = PDF::loadView('View2');
        return $pdf->download('test.pdf');
}

View1 с функцией фильтра работает нормально.Я хочу экспортировать PDF-файл с данными View1 после фильтрации

1 Ответ

0 голосов
/ 21 мая 2019

Это действительно очень просто, если вы можете изменить то, как вы пытаетесь сделать атм.

Измените свой метод getPDF, чтобы он принимал имена параметров get type.

public function getPDF(){
    $type = $this->input('type');

    // get your data here in this call using the parameter(s)
    $model = $model->where('type_id', $type);
    $data = $model->get();

    $view2 = \View::make('view2', ['data', $data]);
    $view2Str = $view1->render();

    // Check the PDF documentation how to pass html and print pdf.
   // I'm assuming this is how the library loads view, as I haven't used this myself.
    $pdf = PDF::loadView( $view2Str );
    return $pdf->download('test.pdf');
}

В ссылке для печати передайте параметр type в качестве строки запроса и создайте ссылку на метод getPDF;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...