Laravelでviewのパスを一時的に変更する。
Laravelを使用していて、一時的にbladeテンプレートの参照ディレクトリを変更したい事があったので、その方法について調べた。
Laravel5〜6にて確認。それ以前のLarvelではやり方が異なる可能性があるので注意。
コントローラーの実装例
public function index() { // 現在のviewの設定を保存する $view = view()->getFinder(); // 変更するビューのパスを定義する $paths = [base_path('/resources/custom_views')]; // ビューのパス設定を変更する $tmp_view = new FileViewFinder(app()['files'], $paths); view()->setFinder($tmp_view); // 一時的に変更したビューパスにあるテンプレートを使って、 // htmlをレンダリングして変数に代入する。 $html = view('template', ['value' => '何かの値']); dump($html->render()); // ビューの設定を元に戻す view()->setFinder($view); // 元のビューパスの /resources/views/index.blade.php を読み込む。 return view('index'); }
/resources/custom_views/template.blade.php
カスタムビューパスからの読みこみ: {{ $value }}