Kolejna lekcja o komponentach Blade w Laravelu, staramy się je lepiej poznać. Do dzieła.
Poprzednio utworzyliśmy komponent komendą:
php artisan make:component Person
Teraz utworzymy podobny przy pomocy komendy:
php artisan make:component People/Link
No to już nam więcej mówi. W folderze View/Components utworzono folder People, w nim komponent Link. Ok, dodajemy konstruktor:
class Link extends Component
{
/**
* Create a new component instance.
*/
public function __construct(
public readonly string $name,
public readonly int $id,
){}
/**
* Get the view / contents that represent the component.
*/
public function render(): View|Closure|string
{
return view('components.people.link');
}
}
Patrzymy, gdzie kieruje nas render – też jak widać w resources/views/components utworzył folder people, w nim link.blade.php. Idziemy tam:
<div>
<li>
<a href="{{route('person.sigleRecord', $id)}}">
<b>Name:</b>{{$name}} <b>ID</b>: {{$id}}
</a>
</li>
</div>
Ok, na razie niewiele się to różni. Zobaczmy, jak użyliśmy poprzedniego komponentu:
Route::get('/people/byagedesc', function (Request $request) {
$ppl= Person::orderBy('age', 'desc')->get();
return Blade::render(
'<ul>
@forelse($people as $person)
<x-person :id="$person->id" :name="$person->firstName"/>
@empty
<li>Nothing found</li>
@endforelse
</ul>', ['people' => $ppl]);
});
Obok w innym route sobie go użyjemy:
Route::get('/people/bycreatedat', function (Request $request) {
$ppl= Person::orderBy('created_at')->get();
return Blade::render(
'<ul>
@forelse($people as $person)
<x-people.link :id="$person->id" :name="$person->full_name"/>
@empty
<li>Nothing found</li>
@endforelse
</ul>
', ['people' => $ppl]);
});
Wielkiej filozofii nie ma, po kropce.