プログラミング学習189日目〜Laravel 書籍で学習 6日目〜

今日はディレクティブの続き。

昨日は@csrfと@ifをやりましたが今日はそれ以外。
@unless,@empty,@isset,@for,@foreach,@while,@break,@continue,@php。

unlessというのは初めてみましたが、ifの反対みたいなもので、
@if(条件)…条件がtrueのとき表示に対し、
@unless(条件)…条件がfalseのときに表示
となるらしい。

@phpはPHPのスクリプトを記述できるもの。なので@phpを使えばがんがん処理も書けるわけですが、そもそも処理と表示を分けるためにビューやコントローラがあるわけで、ビューで処理をたくさん書くのは根本的におかしな話なので、@phpの利用は必要最小限にしたほうがよいとのことです。

他はPHPの関数で使ったものと同じようなものなので、特に問題なく理解できました。breakやcontenueは久々ですっかり忘れてしまっていました。でも何度もやってきたことなのですぐに思い出しはしましたけど。

@forや@foreachなどの繰り返しのディレクティブには$loopというループ変数と呼ばれる特別な変数があります。
例えば $loop->first は最初の繰り返しかどうか(最初ならtrue)、
$loop->last は最後の繰り返しかどうか(最初ならtrue)など。

今ひとつ使いみちがピンとこなかったのですが、例として挙げられていたのはこんなやつ。

//コントローラ

class HelloController extends Controller
{
   public function index() {
       $data = ['one', 'two', 'three', 'four', 'five' ];
       // dd(count($data));
       return view('hello.index',['data'=>$data ]);
   }
}
//Blade

<p>&#064;ループ変数の例</p>
@foreach ($data as $item)
@if($loop->first)
<p>※データ一覧</p>
<ul>
@endif
<li>
    No.{{$loop->iteration}}.{{$item}}
</li>
@if($loop->last)
</ul>
<p>---ここまで</p>
@endif
@endforeach

実際の表示がこちら。

スクリーンショット 2020-07-30 23.25.09

$loop->first,#loop->lastを使わずにforeachの前と後にそれぞれ※データ一覧とか---ここまでとか書けば済むのでは?とも思ったりしましたが、わかりませんがきっと他になにか便利な使い方があるのだと思います。
$loop->iterationは現在の繰り返し数(1から開始)で、これは使いみちがありそうですね。


この記事が気に入ったらサポートをしてみませんか?