eptic / turbo
帮助Laravel与Hotwired Turbo一起工作的助手
3.0.1
2023-08-14 22:52 UTC
Requires
- php: ^8.1|^8.2
- illuminate/contracts: ^10.0
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0
- pestphp/pest: ^v2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2024-09-14 18:09:51 UTC
README
安装
您可以通过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)。请参阅许可文件以获取更多信息。