Laravel基礎|データを取得、ビュー(View)にデータを送る、渡す方法

こんにちは、ヨロと申します。

今回作るのはこれ。

今回は、この画像の「寿司太郎」という部分と「寿司ネタ」の部分のデータを、

「web.php」に登録をして「index.blade.php」で呼び出しています。

今回は、これらを作る事で「Laravel(Bladeテンプレート)」でのデータの取得, 呼び出し方、

View(ビュー)にデータを渡す方法についての、基本的な部分について軽く学ぼうというお話。

Laravel基礎|データを取得、ビュー(View)にデータを送る、渡す方法

という事でまずは、基本的な見た目の部分(レイアウト)

layout.blade.php

<!DOCTYPE html>
<html>
    <head>

        <title>@yield('title')</title>

    </head>

    <body>

        @yield('content')

    </body>

</html>

そして次に「web.php」

web.php

<?php

Route::get('/', function () { // ホームページにきたら~

	$sushis = [

		'まぐろ',

		'たこ',

		'うに',

		'いくら',

	];


// ここで登録し、{{ $**** }} で呼び出す - index.blade.php

    return view('index', [

    	'sushis' => $sushis,

    	'name' => '寿司太郎' // => の後に何でも入れれる。

    ]);

});  



// return文

return view('index', [

	'sushis' => $sushis,

	'name' => '寿司太郎'

]);

このリターン文の部分に関しては「withメソッド」を使ったこんな書き方も可能。

withメソッド

return view('index')->withSushis($sushis)->withName('寿司太郎');

その場合はこんな感じになる。

web.php

<?php

Route::get('/', function () { // ホームページにきたら~

	$sushis = [

		'まぐろ',

		'たこ',

		'うに',

		'いくら',

	];

    return view('index')->withSushis($sushis)->withName('寿司太郎');

});

これでも結果は同じ。

次に「index.blade.php」

index.blade.php

@extends('layout')
@section('title', 'お寿司屋さん')


@section('content')

    <h2>お寿司屋さん:{{ $name }}</h2>

	    <?php foreach ($sushis as $neta) : ?>

	    	<li><?= $neta; ?></li>

	    <?php endforeach; ?>
    
@endsection

今回使ったのは「foreach文」

「foreach文」は、先頭のデータから順に繰り返し処理を行うための命令で、

今回は適当に、$netaという名前にしましたが、分かりやすければ$sushis$sushiだろうが何でもOK。

この場合、$sushisという箱の中に$netaというデータ群があるという意味合いで、

$sushisという箱の中から$netaというデータ群を一つずつ順番に取り出して表示させる作業、

この書き方が、昔ながらの通常の「PHP」の書き方、

ただ、この場合だとちょっと見た目が悪い。

なので「Laravel(Bladeテンプレート)」の場合だと、

Laravel – foreach文

<?php foreach ($sushis as $neta) : ?>
 
	<li><?= $neta; ?></li>
 
<?php endforeach; ?>

↓
↓
↓

@foreach ($sushis as $neta)

	<li>{{ $neta }}</li>

@endforeach

と、こんな感じでもっとシンプルに見やすく書く事が出来る。

その結果「index.blade.php」の中身はこんな感じ ↓

index.blade.php

@extends('layout')
@section('title', 'お寿司屋さん')


@section('content')

    <h2>お寿司屋さん:{{ $name }}</h2>
	
	    @foreach ($sushis as $neta)

	    	<li>{{ $neta }}</li>

	    @endforeach

@endsection

終わり。