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.