Stan's blog

Laravel

Laravel + Turbo Streams

10 июня 2024
Кандинский: Генерация по запросу "Как использовать turbo streams с Larval"

Для Laravel есть дополнения, которые призваны облегчить эту задачу, но мне не совсем понятно, а что, собственно одни облегчают?
Для обработке на стороне сервера надо использовать fragment. Все!
Например, я делал так:
routes/web.php (или  routes/platform.php для orchid)
Route::get('some_fragment', [SomeFragment::class, 'render']);
app/Fragments/SomeFragment.php
<?php

namespace App\Fragments;
use Illuminate\Http\Request;

class SomeFragment
{
    /**
     * Get the view / contents that represents the component.
     */
    public function render(Request $request)
    {
        return view('page-or-fragment', [
                // data
            ])->fragment('some-fragment');
    }
}
page-or-fragment может быть страницей, содержащей необходимый фрагмент, тогда на выходе будет только указанный фрагмент. Можно указать на view только с фрагментом, Если эти данные не присутствуют на страницах, а сделаны отдельно.
view должен содержать либо сам либо вложенный фрагмент, например:
views/fragments/some.blade.php
@fragment('some-fragment')
    <turbo-stream action="{{$action}}" target="{{$target}}">
        <template>
...
        </template>
    </turbo-stream>
@endfragment