headlesslaravel/cards
Composer 安装命令:
composer require headlesslaravel/cards
包简介
Headless Cards for Laravel
README 文档
README
Installation
You can install the package via composer:
composer require headlesslaravel/cards
Make a card class to manage multiple cards of one type:
php artisan make:cards Dashboard
Then add the class to an endpoint:
Route::cards('api/dashboard', Dashboard::class);
<?php namespace App\Http\Cards; use HeadlessLaravel\Cards\Cards; class Dashboard extends Cards { public function cards(): array { return [ Card::make('Total Users') ->link('/users') ->component('number-card') ->value(function() { return User::count(); }), ]; } }
/api/dashboard
{
"data": [
{
"key": "total_users",
"title": "Total Users",
"value": 5,
"component": "number-card",
"link": "/users",
"endpoint": "api/dashboard/total-users"
}
]
}
You can also reference the single method using the key in slug format.
This is useful when you want your ui to update / filter a single card.
/api/dashboard/total-users
{
"key": "total_users",
"title": "Total Users",
"value": 5,
"component": "number-card",
"link": "/users",
"endpoint": "api/dashboard/total-users"
}
This is only a basic example. The real power comes in the filtering multiple cards using one query string and validating that the query string is accurate.
<?php namespace App\Http\Cards; use HeadlessLaravel\Cards\Cards; class Dashboard extends Cards { public function rules() { return [ 'from' => ['nullable', 'date', 'before_or_equal:to'], 'to' => ['nullable', 'date', 'after_or_equal:from'], ]; } public function cards(): array { return [ Card::make('Total Users') ->link('/users') ->component('number-card') ->value(function() { return User::whereBetween('created_at', [ Request::input('from', now()), Request::input('to', now()) ])->count(); }), Card::make('Total Orders', 'total_orders') ->link('/orders') ->component('number-card') ->value(function() { return Order::whereBetween('created_at', [ Request::input('from', now()), Request::input('to', now()) ])->count(); }), ]; } }
Which results in both models being filtered by the same query string.
/dashboard?from=...&to=...
{
"data": [
{
"key": "total_users",
"title": "Total Users",
"value": 5,
"component": "number-card",
"link": "/users",
"endpoint": "api/dashboard/total-users"
},
{
"key": "total_orders",
"title": "Total Orders",
"value": 50,
"component": "number-card",
"link": "/orders",
"endpoint": "api/dashboard/total-orders"
}
]
}
The filters also work on a single card request:
/dashboard/total-users?from=...&to=...
/dashboard/total-orders?from=...&to=...
You can pass a number of things as values:
Views
Card::make('Welcome')->view('cards.welcome');
{
"key": "welcome",
"title": "Welcome",
"value": "<h1>Welcome!</h1>",
"component": null,
"link": null,
"endpoint": "api/dashboard/welcome"
}
Http
Card::make('Weather')->http('api.com/weather', 'data.results.0');
{
"key": "weather",
"title": "Weather",
"value": {
"today": "90 degrees",
"tomorrow": "50 degrees"
},
"component": null,
"link": null,
"endpoint": "api/dashboard/weather"
}
Which is just shorthand for:
Card::make('Weather') ->value(function() { return Http::get('api.com/weather')->json('data.results.0'); }),
Cache
Any values in a callable can be cached: (seconds)
Card::make('Weather') ->cache(60) ->value(function() { return Http::get('api.com/weather')->json('data.today'); }),
License
The MIT License (MIT). Please see License File for more information.
headlesslaravel/cards 适用场景与选型建议
headlesslaravel/cards 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 37 次下载、GitHub Stars 达 1, 最近一次更新时间为 2022 年 02 月 12 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「headless」 「laravel」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 headlesslaravel/cards 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 headlesslaravel/cards 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 headlesslaravel/cards 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
This extension provides integration with solr to output content from TYPO3 in JSON format.
Instrument headless chrome/chromium instances from php5.6
Admin Hub for GetCandy. A modern headless e-commerce solution for Laravel PHP framework.
A new generation of multi-process async event-driven spider engine based on Workerman
Alfabank REST API integration
A simple, file-based blog for Laravel — no database required. Markdown posts with YAML front matter, a Livewire admin with WYSIWYG editor and image gallery, full-text search, scheduling, RSS, sitemap, and SEO meta.
统计信息
- 总下载量: 37
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 7
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-02-12