はじめに
LaravelのBladeを使って、WebページのHTMLを組み立てたりすることは多いと思います。
ただ、出力する内容を単に文字列として変数に落とし込めないかを調べたところ、その方法があったので、備忘録的に記載しておきます。
通常の使い方
基本的な使い方として、HTMLを組み立ててページを表示する時には、以下のように書くことが多いかと思います。
Controller
public function index() {
$data = [
‘content’=>’HELLO WORLD’,
'name'=>'太郎'
];
return view(‘test,index’, $data);
}
View(Blade.php)
<html>
<head>
</head>
<body>
<p>{{ $name }}さん、{{ $content }}</p>
</body>
</html>
これで、ページに「太郎さん、HELLO WORLD」と表示されます。
文字列にする場合
viewに変数を埋め込んだものを直接返しましたが、これを文字列にする場合は、
render()
を使うようです。
これを使って、HTMLではなく、普通の文章に文字列を埋め込んでみます。
use Illuminate\Support\Facades\Log;
public function index() {
$data = [
‘content’=>’HELLO WORLD’,
'name'=>'太郎'
];
//とりあえずログに吐き出してみる
Log::info(view(‘test,index’, $data)->render());
}
View(Blade.php)
{{ $name }}さん、{{ $content }}
これで、ログに「太郎さん、HELLO WORLD」と出力されます。
使い道
あまり使い道はないかと思いますが、Laravelのシステムからメールを送信するときなどに使うとどうでしょうか。
View(Blade.php)
{{ $name }}様
平素より、〇〇システムをご利用いただき、ありがとうございます。
以下のように、メンテナンスを実施することが決まりましたので、ご連絡させていただきます。
【メンテナンス日】
{{ $date }}
【メンテナンス内容】
{{ $content }}
ご迷惑をおかけしますが、何卒よろしくお願い致します。
こんな感じでメールのテンプレートを作っておいて、変数を渡す形で本文を組み立てて送るといい感じかと思います。