首页 > 解决方案 > 从视图到 PDF 的数据未定义变量错误

问题描述

您好,我正在尝试将 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');
  }

  }

标签: phpdatabaselaravel

解决方案


如果我假设您只想调用确认器路由,那么

   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 是我假设的从 Confirmer() 传递的数据

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'));

  }

您现在可以通过调用控制器中的函数在一个路由中调用两个控制器


推荐阅读