Добавить PDF к клиенту - laravel 5.7 - PullRequest
0 голосов
/ 16 октября 2018

У меня небольшая система CRM.Я могу создавать, обновлять и удалять клиентов.У меня также есть подробное представление для каждого клиента.Теперь я хочу в конце одиночного просмотра кнопку: Create Offer.

У меня есть 2 таблицы.1 Таблица имеет имя: customer с некоторыми полями Имя, Фамилия и т. Д. Я создаю клиента следующим образом:

<form method="post" action="/mvs/mvs/public/admin/kunden">
    {{ csrf_field() }}
    <div class="container">
        <div class="row">
            <div class="col-md-12 col-md-offset-2" >

                <div class="form-group">
                    <label for="vorname">Vorname</label>
                    <input type="text" class="form-control" name="vorname" id="vorname" placeholder="Vorname" value="{{ old('vorname') }}" required>
                </div>
                <div class="form-group">
                    <label for="nachname">Nachname</label>
                    <input type="text" class="form-control" name="nachname" id="nachname" placeholder="Nachname" value="{{ old('nachname') }}" required>
                </div>

                <div class="form-group">
                    <label for="strasse">Straße</label>
                    <input type="text" class="form-control" name="strasse" id="strasse" placeholder="Strasse" value="{{ old('strasse') }}" required>
                </div>

                <div class="form-group">
                    <label for="plz">PLZ</label>
                    <input type="number" class="form-control" name="plz" id="plz" placeholder="Plz" value="{{ old('plz') }}" required>
                </div>

                <div class="form-group">
                    <label for="wohnort">Wohnort</label>
                    <input type="text" class="form-control" name="wohnort" id="wohnort" placeholder="Wohnort" value="{{ old('wohnort') }}" required>
                </div>

                 <div class="form-group">
                    <label for="mail">Mail</label>
                    <input type="mail" class="form-control" name="mail" id="mail" placeholder="E-mail" value="{{ old('mail') }}" required>
                </div>

                <div class="form-group">
                    <label for="telefon">Telefon</label>
                    <input type="text" class="form-control" name="telefon" id="telefon" placeholder="Telefon" value="{{ old('telefon') }}" required>
                </div>

                <div class="form-group">
                    <label for="geburtsdatum">Geburtsdatum</label>
                    <input type="date" class="form-control" name="geburtsdatum" id="geburtsdatum" placeholder="Geburtsdatum" value="{{ old('geburtsdatum') }}" required>
                </div>

                <br>

                <button type="submit" class="btn btn-primary">Kunden anlegen</button>
                <a href="{{ URL::previous() }}"><button type="submit" class="btn btn-danger">Abbrechen</button></a>

            </div>
        </div>
    </div>
</form>

Подробное представление аналогично этой странице.В детальном виде я сделал кнопку.Кнопка связана с динамическим контроллером PDF.Контроллер Dynamic PDF работал, но я не знаю, как получить данные от клиента детального просмотра.Я получаю данные только от ВСЕХ клиентов в таблице.

вот фрагмент:

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

Я понимаю, что это неправильно (я начинающий, извините за это) Но я не знаю, какЯ могу закодировать, что я получаю данные от клиента, которые я выбрал в детальном представлении.

Когда я нажимаю на кнопку, я хочу, чтобы PDF-файл сохранялся в базе данных и был связан с этим клиентом.

Надеюсь, я объяснил ясно.Когда нет, пожалуйста, не понижайте - я пытаюсь объяснить лучше, когда этого недостаточно.

Ответы [ 2 ]

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

на странице подробного просмотра кнопка (ссылка) будет выглядеть примерно так:

<a href="/public/pdf/{$customer->id}"><button type="submit" class="btn btn-danger">Abbrechen</button></a>

ваш маршрут (web.php):

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

ваш DynamicPDFController будет:

            function get_customer_data($id){
    $customer_data = DB::table('kundens')
             ->find($id);

//Paste the PDF converting code here to convert the data on $customer collection.
        return $customer_data;
        }
0 голосов
/ 16 октября 2018

Если я правильно понимаю: вы хотите получать данные только от одного конкретного клиента по нажатию кнопки?

Ссылка на кнопку с идентификатором kunden:

<a href="/mvs/mvs/public/admin/kunden/pdf/{{ $kunden->id }}">Button html</a>

Новый маршрут:

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

Обновление контроллера:

function get_customer_data($id)
{
 //Handle PDF stuff here 

 $customer_data = DB::table('kundens')
     ->where('id', '=', $id)
     ->firstOrFail();

//Save PDF link to customer here

 $customer_data->save();
 return $customer_data;
}

---- РЕДАКТИРОВАТЬ ----

A Полное руководство:

HTML:

<form method="post" action="/mvs/mvs/public/admin/kunden/pdf/{{ $kunden->id }}">
    {{ csrf_field() }}
    <div class="container">
        <div class="row">
            <div class="col-md-12 col-md-offset-2" >

                <div class="form-group">
                    <label for="vorname">Vorname</label>
                    <input type="text" class="form-control" name="vorname" id="vorname" placeholder="Vorname" value="{{ old('vorname') }}" required>
                </div>
                <div class="form-group">
                    <label for="nachname">Nachname</label>
                    <input type="text" class="form-control" name="nachname" id="nachname" placeholder="Nachname" value="{{ old('nachname') }}" required>
                </div>

                <div class="form-group">
                    <label for="strasse">Straße</label>
                    <input type="text" class="form-control" name="strasse" id="strasse" placeholder="Strasse" value="{{ old('strasse') }}" required>
                </div>

                <div class="form-group">
                    <label for="plz">PLZ</label>
                    <input type="number" class="form-control" name="plz" id="plz" placeholder="Plz" value="{{ old('plz') }}" required>
                </div>

                <div class="form-group">
                    <label for="wohnort">Wohnort</label>
                    <input type="text" class="form-control" name="wohnort" id="wohnort" placeholder="Wohnort" value="{{ old('wohnort') }}" required>
                </div>

                 <div class="form-group">
                    <label for="mail">Mail</label>
                    <input type="mail" class="form-control" name="mail" id="mail" placeholder="E-mail" value="{{ old('mail') }}" required>
                </div>

                <div class="form-group">
                    <label for="telefon">Telefon</label>
                    <input type="text" class="form-control" name="telefon" id="telefon" placeholder="Telefon" value="{{ old('telefon') }}" required>
                </div>

                <div class="form-group">
                    <label for="geburtsdatum">Geburtsdatum</label>
                    <input type="date" class="form-control" name="geburtsdatum" id="geburtsdatum" placeholder="Geburtsdatum" value="{{ old('geburtsdatum') }}" required>
                </div>

                <br>
<input type="hidden" name="kunden-id" value="{{ $kunden->id }}" />
                <button type="submit" class="btn btn-primary" >Kunden anlegen</button>

                <a href="{{ URL::previous() }}"><button type="submit" class="btn btn-danger">Abbrechen</button></a>

            </div>
        </div>
    </div>
</form>

Маршрут:

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

Контроллер:

namespace MVS\Http\Controllers;

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

class DynamicPDFController extends Controller
{
    function index(Request $request)
    {

     $data = $request->all();

     $id = $data['kunden-id'];
     $customer_data = $this->get_customer_data($id);
     //$finance_data = $this->get_finance_data();
     return view('dynamic_pdf')->with('customer_data', $customer_data);
    }

    function get_customer_data($id)
    {
     $customer_data = Kunden::whereId($id)->first();
     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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...