Неправильно View create PDF laravel - PullRequest
0 голосов
/ 23 октября 2018

При нажатии кнопки я хочу PDF.Но я не получаю PDF, я просто получаю данные из базы данных.

Мой код:

<?php

namespace MVS\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use PDF;
use MVS\Kunden;

class DynamicPDFController extends Controller
{
    function index()
    {
     $customer_data = $this->get_customer_data();
     $finance_data = $this->get_finance_data();
     return view('dynamic_pdf')->with('customer_data', $customer_data);
    }

    function get_customer_data($id)
    {
     $customer_data = Kunden::find($id);
     return $customer_data;
    }

    function pdf()
    {
     $pdf = \App::make('dompdf.wrapper');
     $pdf->loadHTML($this->convert_customer_data_to_html());
     return $pdf->stream();
    }

    function convert_customer_data_to_html()
    {
     $customer_data = $this->get_customer_data();
     $output = '
     <h3 align="center">Angebot</h3>
     <table width="100%" style="border-collapse: collapse; border: 0px;">
      <tr>
    <th style="border: 1px solid; padding:12px;" width="20%">Vorname</th>
    <th style="border: 1px solid; padding:12px;" width="30%">Nachname</th>
    <th style="border: 1px solid; padding:12px;" width="15%">Stadt</th>
    <th style="border: 1px solid; padding:12px;" width="15%">PLZ</th>
   </tr>
     ';  
     foreach($customer_data as $kunden)
     {
      $output .= '
      <tr>
       <td style="border: 1px solid; padding:12px;">'.$kunden->vorname.'</td>
       <td style="border: 1px solid; padding:12px;">'.$kunden->nachname.'</td>
       <td style="border: 1px solid; padding:12px;">'.$kunden->wohnort.'</td>
       <td style="border: 1px solid; padding:12px;">'.$kunden->plz.'</td>
      </tr>
      ';
     }
     $output .= '</table>';
     return $output;
    }
}

Я просто получаю следующее сообщение:

{"id": 1, "creation_at": "2018-10-15 06:56:15", "updated_at": "2018-10-15 06:56:15", "user_id": 2, "vorname"":" Patrick "," nachname ":" Marks "," strasse ":" teststraße 9 "," plz ": 47906," wohnort ":" Krefeld "," mail ":" p-dierig@sdsd.de ", "telefon": 21514462, "geburtsdatum": "2013-10-30"}

Маршрут следующий:

Route::get('/admin/kunden/pdf/{id}', 'DynamicPDFController@get_customer_data');

Когда я использую этот код вконтроллер:

function index()
    {
     $customer_data = $this->get_customer_data();
     return view('dynamic_pdf')->with('customer_data', $customer_data);
    }

    function get_customer_data()
    {
     $customer_data = DB::table('kundens')
         ->limit(10)
         ->get();
     return $customer_data;
    }

Я получу PDF со ВСЕМИ клиентами в таблице.Но я хочу только от конкретного пользователя данные ...

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Если вы публикуете метод GET на

Route::get('/admin/kunden/pdf/{id}', 'DynamicPDFController@get_customer_data');

, тогда вы нажмете function get_customer_data(){} в вашем DynamicPDFController

Это попадет на этот код:

$customer_data = DB::table('kundens')
         ->limit(10)
         ->get();
return $customer_data;

Таким образом, вы получите только данные о клиентах.

Попробуйте изменить это:

Route::get('/admin/kunden/pdf/{id}', 'DynamicPDFController@get_customer_data');

На это:

Route::get('/admin/kunden/pdf/{id}', 'DynamicPDFController@index');

Теперь попробуйте изменить ваши get_customer_data на это:

function get_customer_data()
    {
     $customer_data = DB::table('kundens')->first();
     return $customer_data;
 }

Это должно дать вам только одного клиента.Теперь мы должны сделать его динамическим, чтобы вы могли передавать идентификатор или аналогичный функции:

function get_customer_data($id)
    {
     $customer_data = DB::table('kundens')->whereId($id)->first();
     return $customer_data;
    }

Не забудьте изменить функцию индекса:

function index()
    {
     $id = 1;
     $customer_data = $this->get_customer_data($id);
     return view('dynamic_pdf')->with('customer_data', $customer_data);
    }

Теперь отредактируйте свой индекс соответствующим образом, так что вы можете передать идентификатор функции индекса для динамической настройки.

0 голосов
/ 23 октября 2018

Поскольку ваши коды, вызывающие информацию о пользователях, проверяют этот маршрут:

Route :: get ('/ admin / kunden / pdf / {id}', 'DynamicPDFController @ get_customer_data');

на этом маршруте вы вызываете функцию get_customer_data () в классе DynamicPDFController.

, если мы посмотрим на это:

$customer_data = Kunden::find($id);
     return $customer_data;

эти коды реагируют на json.

Вы можете заменить функции следующим образом:

function get_customer_data($id)
    {
     $customer_data = Kunden::find($id);


     return $this->pdf($customer_data);
    }

    function pdf($customer_data)
    {
     $pdf = \App::make('dompdf.wrapper');
     $pdf->loadHTML($this->convert_customer_data_to_html($customer_data));
     return $pdf->stream();
    }

    function convert_customer_data_to_html($customer_data)
    {

     $output = '
     <h3 align="center">Angebot</h3>
     <table width="100%" style="border-collapse: collapse; border: 0px;">
      <tr>
    <th style="border: 1px solid; padding:12px;" width="20%">Vorname</th>
    <th style="border: 1px solid; padding:12px;" width="30%">Nachname</th>
    <th style="border: 1px solid; padding:12px;" width="15%">Stadt</th>
    <th style="border: 1px solid; padding:12px;" width="15%">PLZ</th>
   </tr>
     ';  
     foreach($customer_data as $kunden)
     {
      $output .= '
      <tr>
       <td style="border: 1px solid; padding:12px;">'.$kunden->vorname.'</td>
       <td style="border: 1px solid; padding:12px;">'.$kunden->nachname.'</td>
       <td style="border: 1px solid; padding:12px;">'.$kunden->wohnort.'</td>
       <td style="border: 1px solid; padding:12px;">'.$kunden->plz.'</td>
      </tr>
      ';
     }
     $output .= '</table>';
     return $output;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...