Laravel 動的に作成した BLADE文字列 をレンダリングするには?

ショコラ
ショコラ

Laravel 動的に作成した BLADE文字列 をレンダリングするには?

resources/views/dynamic に一時的なブレードファイルを作成して、レンダリングした結果を返します。

もっさん先輩
もっさん先輩

render_blade関数 を作成しました。

function render_blade(string $blade)
{
  $tmpl = uniqid();
  $file = resource_path('views/dynamic/'.$tmpl.'.blade.php');
  try {
    file_put_contents($file,$blade);
    return view('dynamic.'.$tmpl)->render();
  }
  finally {
    unlink($file);
  }
}

一時的なブレードファイルのディレクトリを作成します。

mkdir -m 777 resources/views/dynamic

view のパラメーターに blade文字列 を設定します。

Route::get('/', fn() => view('index',['component'=>'<livewire:counter />']));

ブレードでは以下のようにして blade文字列 を展開させます。

{!! render_blade($component) !!}

以上

Scroll to Top