この記事について
laravelを最近使い始めた者です。
laravelのBlade拡張の使い方について備忘録を兼ねて投稿します。この記事では
・foreachなどの使い方
・関数の使い方
を書きます。
(※Qiita初投稿です。何か間違っている箇所があった場合はご指摘いただけると幸いです。)
#Blade拡張について
ドキュメントはこちら
要するに@ifや@foreachなどのようなものを自分で作れるらしい。Blade内に自作の関数を作れたりするようで、便利そうなので色々試してみました。
#foreachなどを使う場合
例えばある配列をforeachを使って処理することを試みました。最初に書いたのが以下のようなもの
public function boot()
{
Blade::directive('sample', function($array) {
foreach($array as $value) {
'何らかの処理'
}
return "<?php var_dump($array); ?>";
});
}
しかし、これでは以下のようなエラーが出てしまいました。
Invalid argument supplied for foreach()
##解決法
returnの中にforeach文を書けば出来ました。
public function boot()
{
Blade::directive('sample', function($array) {
return "<?php foreach($array as $value) { '何らかの処理' } var_dump($array); ?>";
});
}
ただ長い処理を書くとすごいわかりにくくなってしまうかも…。
何か他にやり方がある場合は教えてくださいm(_ _)m
#関数を使いたい場合
自作の関数を作って使いたいと思った場合も
躓きました。
これもすべての中に書いてしまい、先に関数を宣言することで解決しました。例えば以下のような形で実装しました。
public function boot()
{
Blade::directive('sampleFnc', function($array) {
return "<?php function sampleFnc($i) { $result = $i * 2; return $result; } ?>";
});
Blade::directive('sample', function($array) {
return "<?php $test = 2; $test = sampleFnc($test); echo $test; ?>";
});
}
//関数を宣言
@sampleFnc
//実行
@sample
こんな感じで実装したら出来ました。
#まとめ
Blade拡張を使った例がドキュメントのような例しかなく、関数やforeach、if文などを使いたいときにどうすればいいのか分からず悩んだので忘れないように記事にしてみました。
上記のような形で実装できたけど、これが正しいやり方なのかはわからないので、何かご指摘があればコメントしていただけると嬉しいです。
以上、Qiita初投稿でした。