area17 / component-transformers
Twill apps 的组件转换器
v0.2
2023-05-26 17:12 UTC
Requires
- php: ^7.4|^8.0|^8.1
- illuminate/filesystem: ^7.0|^8.0|^9.0|^10.0
- illuminate/support: ^7.0|^8.0|^9.0|^10.0
- spatie/laravel-package-tools: ^1.13.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^6.0
- orchestra/testbench: ^7.0
README
设计系统由可在任何地方使用的组件组成,但在集成过程中,用于解析组件数据的代码通常会被重复使用。组件转换器包允许您为每个组件及其变体创建转换器,将应用程序输出的数据转换为前端组件能够消费的格式。
它旨在与 Twill 一起使用,并支持页面数据和块数据。
发布配置
php artisan vendor:publish --tag=component-transformers-config
创建转换器
您可以在 app
目录中手动创建一个文件,以下是一个基本模板
<?php namespace App\Transformers; use A17\ComponentTransformers\Base; class ComponentName extends Base { public function primary($data = null): array { return [ // 'title' => $data->title ?? null, ]; } }
或者您可以使用内置命令自动创建一个
php artisan transformer:create
这将创建一个与上述文件类似的文件在您的 app
目录中。如果存在与您输入的组件名称相同的文件,它将在该文件末尾添加一个使用变体名称的方法。
使用转换器
在块中
$items = Transform::listing($block->getRelated('items'))->primary();
在控制器中
use A17\ComponentTransformers\Transform; class MyController extends Controller { public function index() { $item = MyModel::first(); return [ 'hero' => Transform::hero($item)->primary(), 'listing' => Transform::listing($item)->primary(), ]; } }