Wreszcie coś, czego nie robiliśmy w projekcie framework MVC – faker Laravela i pętle range w blade. Zobaczmy, w czym rzecz!
Ok, najpierw tworzymy navbar w app.blade.php:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Layout App - @yield('title', 'Main Page')</title>
@vite('resources/js/app.js')
</head>
<body>
@if(session('status'))
<p>{{session('status')}}</p>
@endif
@section('navbar')
<nav>
<a href="{{route('faker')}}">Faker Example</a>
</nav>
@show
@yield('content')
</body>
</html>
Używamy tego navbara w welcome2.blade.php razem z czymś dodatkowym tylko dla tej strony:
@extends('layouts.app')
@section('navbar')
@parent
<a href="https://www.google.com">Google</a>
@endsection
@section('content')
//(...)
@endsection
Jeżeli nie chcemy nic dodawać, to należy olać section navbar w ogóle, zaś jeżeli nie chcemy, aby nam się „superowały” linki z app.blade.php to należy olać parent.
Ok, tworzymy faker.blade.php:
@extends('layouts.app')
@section('title', 'Faker Example')
@section('content')
<h1>Faker example</h1>
@foreach (range(1, 5) as $index)
<div>
<p>{{ fake()->name() }}</p>
<p>Email: {{ fake()->unique()->safeEmail() }}</p>
<p>Phone: {{ fake()->phoneNumber() }}</p>
<p>Address: {{ fake()->address() }}</p>
</div>
@endforeach
@endsection
Jak widać olaliśmy section navbar bo nie chcemy nic tutaj zmieniać. Mamy tutaj pętlę foreach z range, mamy użycie fakera. Teraz dostosujmy route:
Route::get('/faker', function () {
return view('faker');
})->name("faker");
Możemy już testować, jak to nam działa. Faker to helper i jako taki jest dostępny w blade, nie tylko w seederach (gdzie tego będziemy używać najczęściej).
Możemy sobie zatem poeksperymentować z różnymi funkcjami:
@extends('layouts.app')
@section('title', 'Faker Example')
@section('content')
<h1>Faker example</h1>
@foreach (range(1, 5) as $index)
<div>
<p>Fake male fullname: {{ fake()->name('male') }}</p>
<p>Fake female fullname: {{ fake()->name('female') }}</p>
<p>Fake first name: {{ fake()->firstName()}}</p>
<p>Fake last name: {{ fake()->lastName()}}</p>
</div>
@endforeach
@endsection
Eksperymentując w ten sposób lepiej zrozumiemy narzędzia, których używamy.