从视图到PDF的数据未定义变量错误

时间:2018-05-23 00:30:19

标签: php database laravel

您好我正在尝试将html页面保存为pdf 这个页面有我从数据库中获得的一些数据 我尝试了很多,但没有任何对我有用 我只是想将我的数据发送到这个视图,所以我可以得到我的PDF文件我不关心显示视图或没有

我的路线:

Route::get('/confirmation','VerificationsController@afficherconfirmer');
  Route::get('/confirmer','VerificationsController@confirmer');

我的职能:

public function afficherconfirmer(){
    $professor = Auth::user();
    $exams = $professor->exams;
    $verifications = Verification::with('exam')->whereIn('exam_id', $exams->pluck('id') )->where([
    ['confirmation', 'non'],
    ['modifier', 'oui'],
    ])->get();

    return view('confirmations.confirmer',compact('verifications','professor'));

  }
  public function confirmer(){
    $pdf = PDF::loadView('confirmations.confirmer');
    return $pdf->download('confirmation_changement_notes.pdf');
  }

即便如此,我也会得到错误的未定义变量

任何想法如何在没有第一条路线的情况下将数据传递到我的视图,这样我就可以获得带有数据的pdf? 我可以创建这样的东西吗?

public function confirmer(){
    View::composer('confirmations.confirmer', function ($view) {
      $professor = Auth::user();
      $exams = $professor->exams;
      $verifications = Verification::with('exam')->whereIn('exam_id', $exams->pluck('id') )->where([
      ['confirmation', 'non'],
      ['modifier', 'oui'],
      ])->get();
  });
    $pdf = PDF::loadView('confirmations.confirmer');
    return $pdf->download('confirmation_changement_notes.pdf');
  }

  }

1 个答案:

答案 0 :(得分:0)

如果我假设你只想打电话给确认者路线那么

   public function confirmer(){
    $pdf = PDF::loadView('confirmations.confirmer');
    $dataPDF = $pdf->download('confirmation_changement_notes.pdf');
    $this->afficherconfirmer($dataPDF) //Returns the data to the afficherconfirmer
  }

您将数据传递给afficherconfirmer,$ dataPDF是您从确认者传递的假定数据()

public function afficherconfirmer($dataPDF){
    $professor = Auth::user();
    $exams = $professor->exams;
    $verifications = Verification::with('exam')->whereIn('exam_id', $exams->pluck('id') )->where([
    ['confirmation', 'non'],
    ['modifier', 'oui'],
    ])->get();

    return view('confirmations.confirmer',compact('verifications','professor'));

  }

现在可以通过调用控制器中的函数

在一个路径中调用两个控制器