どんな要望やねん…ていうか、こんな感じですね。 laravel.io
Controllerの中で、
<?php $foo = 'bar'; $text = view('This is {{$foo}}.')->render(); // $text = 'This is bar.';
結構この手の質問は見かけられるんだけど、どれも5年以上前ので。
ヘルパ関数ひとつ作れっていう回答
こんな感じ laracasts.com
<?php use Symfony\Component\Debug\Exception\FatalThrowableError; function render($__php, $__data) { $obLevel = ob_get_level(); ob_start(); extract($__data, EXTR_SKIP); try { eval('?' . '>' . $__php); } catch (Exception $e) { while (ob_get_level() > $obLevel) ob_end_clean(); throw $e; } catch (Throwable $e) { while (ob_get_level() > $obLevel) ob_end_clean(); throw new FatalThrowableError($e); } return ob_get_clean(); }
このメソッドは、Controllerに入れておけばいいかな。
で、使う時は
<?php $blade = 'Hello, {{ $planet }}!'; $php = Blade::compileString($blade); return render($php, ['planet' => 'World']);
だって。
wpb/string-blade-compiler を使う
良いパッケージがあった。 packagist.org
2014年2月にInitial Commitでまだ開発継続中。
これで何も考えずに composer require wpb/string-blade-compiler して、Configとか不要で
<?php $user = Auth::user(); $x = view(['template' => 'Email => {{$user->email}}'], ['user' => $user]); // $x => Email => admin@example.com
でいける。うーん、なんかよく動作原理がわからんけど、クソ便利。