DOMPDF - Laravel - электронная почта PDF с приложением - PullRequest
0 голосов
/ 11 сентября 2018

Я получаю эту ошибку, что может быть причиной для этого

"Неопределенная переменная: цитата"

QuotationController.php

public function update(Request $request, Quotation $quotation)
    {
      {


          $quotation->description= $request['description'];
          $quotation->qty= $request['qty'];
          $quotation->each_price= $request['each_price'];
          $quotation->save();

         $info = ['info'=>$quotation];

         Mail::send(['text'=>'mail'], $info, function($message){

             $pdf = PDF::loadView('employees.quotations.edit', $quotation);

             $message->to('example@gmail.com','John Doe')->subject('Quotation');

             $message->from('from@gmail.com','The Sender');

             $message->attachData($pdf->output(), 'filename.pdf');

           });
          echo 'Email was sent!';

        }
      }

public function edit(Quotation $quotation)
    {
        return view('employees.quotations.edit', compact('quotation'));
        //return view('employees.quotations.edit')->with('quotation');

    }

......................................................................

маршруты выглядят так

Route::post('/quotation', 'Employee\QuotationController@store')->name('employee.quotation.store');
  Route::get('/quotation', 'Employee\QuotationController@index')->name('employee.quotation.index');
  Route::get('/quotation/create', 'Employee\QuotationController@create')->name('employee.quotation.create');
  Route::put('/quotation/{quotation}', 'Employee\QuotationController@update')->name('employee.quotation.update');
  Route::get('/quotation/{quotation}', 'Employee\QuotationController@show')->name('employee.quotation.show');
  Route::delete('/quotation/{quotation}', 'Employee\QuotationController@destroy')->name('employee.quotation.destroy');
  Route::get('/quotation/{quotation}/edit', 'Employee\QuotationController@edit')->name('employee.quotation.edit');

сотрудников.quotations.edit.blade.php выглядит так

@section('left-menu')

@endsection

@section('right-menu')

@endsection

@section('content')
  <h1>Update a Quotation</h1>
  <br><br>

    <form action="{{ route('employee.quotation.update',$quotation->id) }}" method="post">
      @method('PUT')
      @csrf
      <div class="form-group">
        <label for="inputJobDescription">Description</label>
        <textarea class="form-control" rows="2" id="inputQuoteDescription" name="description" placeholder="Description">{{$quotation->description}}
</textarea>
      </div>
      <div class="form-group row">
        <label for="inputQty" class="col-2 col-form-label">Qty</label>
        <div class="col-10">
          <input type="text" class="form-control" id="inputQty" name="qty" value="{{$quotation->qty}}" oninput="quotation_calculate()" onchange="quotation_calculate()">
        </div>
      </div>
      <div class="form-group row">
        <label for="inputEachPrice" class="col-2 col-form-label">Each Price</label>
        <div class="col-10">
          <input type="text" class="form-control" id="inputEachPrice" name="each_price" value="{{$quotation->each_price}}" oninput="quotation_calculate()" onchange="quotation_calculate()">
        </div>
      </div>
      <button type="submit" class="btn btn-primary">Submit</button>
    </form>
@endsection

@section('pagescript')

@stop

Что мне здесь не хватает?Я уже передаю цитату $ в окно редактирования

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Вы явно не передаете переменную $quotation по вашему маршруту. Вы также используете $quotation как объект; это говорит мне, что вы не собираетесь проходить через маршрут. Попробуйте следующий код:

public function update(Request $request, $quotation_id)
    {
      $quotation = Quotation::findOrFail($quotation_id);

      $quotation->description= $request['description'];
      $quotation->qty= $request['qty'];
      $quotation->each_price= $request['each_price'];
      $quotation->update();

     $info = ['info'=>$quotation];

     Mail::send(['text'=>'mail'], $info, function($message) use ($quotation){

         $pdf = PDF::loadView('employees.quotations.edit', $quotation);

         $message->to('example@gmail.com','John Doe')->subject('Quotation');

         $message->from('from@gmail.com','The Sender');

         $message->attachData($pdf->output(), 'filename.pdf');

       });
      echo 'Email was sent!';

    }

Это должно работать.

0 голосов
/ 11 сентября 2018

Я думаю, вам нужно передать $quotation в замыкание:

    Mail::send(['text' => 'mail'], $info, function ($message) use ($quotation) {

        $pdf = PDF::loadView('employees.quotations.edit', $quotation);

        $message->to('example@gmail.com', 'John Doe')->subject('Quotation');

        $message->from('from@gmail.com', 'The Sender');

        $message->attachData($pdf->output(), 'filename.pdf');

    });
0 голосов
/ 11 сентября 2018

Почему вы используете двойные скобки для объявления функции? Почему бы и нет:

public function update(Request $request, Quotation $quotation)
    {
      


          $quotation->description= $request['description'];
          $quotation->qty= $request['qty'];
          $quotation->each_price= $request['each_price'];
          $quotation->save();

         $info = ['info'=>$quotation];

         Mail::send(['text'=>'mail'], $info, function($message){

             $pdf = PDF::loadView('employees.quotations.edit', $quotation);

             $message->to('example@gmail.com','John Doe')->subject('Quotation');

             $message->from('from@gmail.com','The Sender');

             $message->attachData($pdf->output(), 'filename.pdf');

           });
          echo 'Email was sent!';

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