eptic/turbo

帮助Laravel与Hotwired Turbo一起工作的助手

3.0.1 2023-08-14 22:52 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

安装

您可以通过composer安装此包

composer require eptic/turbo

根据官方@Hotwired/Turbo文档,您需要将此包中提供的TurboMiddleware添加到Kernel.php中的web组中,以处理Turbo期望的重定向。
您可以在官方文档中了解更多信息
表单提交后的重定向

示例

'web' => [
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    // \Illuminate\Session\Middleware\AuthenticateSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \App\Http\Middleware\VerifyCsrfToken::class,
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
    -> \Eptic\Turbo\Middleware\TurboMiddleware::class,
],

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="turbo-config"

可选地,您可以使用以下命令发布用作模板的视图

php artisan vendor:publish --tag="turbo-views"

您可以在configs文件夹中查看配置文件的内容。

使用方法

Turbo帧

要生成turbo帧响应

return response()->turboFrame()->generic(id: 'gallery', partial: view('pages.galleries._partials.create'), target: '#gallery-create');

检查请求是否在turbo帧内部进行

request()->wantsTurboFrame()

Turbo流

要检查请求是否为turbo流请求

request()->expectsTurboStream()

要生成turbo流,您可以在响应对象上使用turboStream方法。
它具有原始Hotwired文档中所有的签名

  • 追加
    return response()->turboStream()->append(target: 'gallery-create', partial: view('pages.galleries._partials.create'));
  • 前置
    return response()->turboStream()->prepend(target: 'gallery-create', partial: view('pages.galleries._partials.create'));
  • 替换
    return response()->turboStream()->replace(target: 'gallery-create', partial: view('pages.galleries._partials.create'));
  • 更新
    return response()->turboStream()->update(target: 'gallery-create', partial: view('pages.galleries._partials.create'));
  • 删除
    return response()->turboStream()->remove(target: 'gallery-create');
  • 在...
    return response()->turboStream()->before(target: 'gallery-create', partial: view('pages.galleries._partials.gallery'));
  • 之后...
    return response()->turboStream()->after(target: 'gallery-create', partial: view('pages.galleries._partials.gallery'));

如果您已经有一个包含整个模板的视图,只想设置正确的内容类型以便它被识别为turbo流,您可以使用

return response()->turboStream()->view(view: 'pages.galleries.create', data: $data);
// Or you can pass in a view directly
return response()->turboStream()->view(view: view('pages.galleries.create', $data));

测试

composer test

变更日志

请参阅CHANGELOG以获取最近更改的更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全漏洞

请查看我们的安全策略以了解如何报告安全漏洞。

致谢

许可

MIT许可(MIT)。请参阅许可文件以获取更多信息。