2017-02-01 48 views
2

這是我的控制器和用於顯示視圖的功能。目前我必須重複所有從索引到exportPDF的變量。因此,出口需要太多時間。在同一控制器中將變量從一個功能傳遞到另一個功能

class MyController extends Controller { 
    public function index($id) { 
     $article = Article::find($id); 
     return view('articles', compact('article'); 
    } 
} 

而實際輸出pdf的另一種方法。我希望它是更短,更簡單的是這樣的:

public function exportPDF($id) { 
    $pdf = PDF::loadView('articles', ['article' => $article]); 
    return $pdf->setPaper('a4')->setOrientation('portrait')->setOption('margin-top', 0)->download('export-' . $id . '.pdf'); 
} 

如何傳遞這個$article變量從指數exportPDF功能?順便說一句。在web.php(Laravel 5.3)的路由設置如下:

Route::get('exportPDF/{id}', '[email protected]'); 
+0

它類似於像代碼,他們在同一個班?所以'$ this-> exportPDF()'不應該工作?如果exportPDF方法在另一個類「PdfGenerator」中,那麼'(new PdfGenerator) - > exportPDF(...)'應該可以工作 –

+0

是的,它們在同一個控制器中。但我不確定我是否理解你。我想要點擊按鈕(調用/ exportPDF url)時將頁面導出爲PDF。所以,我需要索引函數中的這些變量也在exportPDF中。它適用於我複製所有變量並將其粘貼到exportPDF。但它看起來很醜並需要太多時間才能導出pdf。 – harunB10

回答

2

您必須使用以下

class MyController extends Controller{ 
    public function index($id){ 
     $article = Article::find($id); 
     $exportedPDF = $this->exportPDF($id,$article); 
     return view('articles', compact('article'); 
    } 

    public function exportPDF($id,$article){ 
     $pdf = PDF::loadView('articles', ['article' => $article]); 
     return $pdf->setPaper('a4')->setOrientation('portrait')->setOption('margin-top', 0)->download('export-' . $id . '.pdf'); 
    } 
} 
+0

當我這樣做時,我得到這個錯誤'應用程序\ Http \ Controllers \ MyController :: exportPDF()丟失參數1「。順便說一句我已經改變了我的路線是'/ exportPDF /' – harunB10

+0

我也改變了函數索引和函數導出PDF,所以複製/粘貼它們,然後嘗試。如果你不再需要'$ id',就把它刪除。 – KuKeC

+0

不,不工作。順便說一句。我有更多的變數可以通過(其中17個)。我可以將'$ exportedPDF'變量作爲數組參數傳遞給exportPDF函數嗎? – harunB10

相關問題