ショコラ
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) !!}
以上