antweb/fusion-antfusion
Composer 安装命令:
composer require antweb/fusion-antfusion
包简介
A FusionCMS addon.
关键字:
README 文档
README
Addon built for FusionCMS (beta.getfusioncms.com), inspired by Laravel Nova (nova.laravel.com).
Installation
composer require antweb/fusion-antfusion
Then, create a folder AntFusion under the app folder.
Then, create a file Resource.php inside the AntFusion folder, by copy the following code:
<?php namespace App\AntFusion; abstract class Resource extends \Addons\AntFusion\Resource { }
Basic Usage
-
Create a new resource file:
<?php namespace App\AntFusion; use App\Models\User; use Addons\AntFusion\Fields\Fusion as FusionField; class NewResource extends Resource { protected $model = User::class; // Model class of the resurce protected $clickColumnHandle = 'name'; public function fields() { return [ FusionField::make('Name', 'name')->asName(), ]; } public function actions() { return [ // \Addons\AntFusion\Actions\Create::make()->primary(), new \Addons\AntFusion\Actions\Edit, ]; } }
-
Put this line in
AppServiceProvideror any service provider that you prefer:(new \App\AntFusion\NewResource)->register();
-
Login to FusionCMS admin panel and you should able to see a new page on menu.
Route
-
Register route for Page or Resource
Route::antfusionAdmin('/path', App\AntFusion\TestPage::class); // OR Route::antfusionAdmin('/path', App\AntFusion\TestResource::class);
Resource
-
Change URL slug for resource
class NewResource extends Resource { protected $slug = 'user-list'; }
-
Change icon for resource
class NewResource extends Resource { protected $icon = 'users'; }
-
Change page title for resource
class NewResource extends Resource { protected $name= 'Users'; }
Page
-
Create a new Page class:
<?php namespace App\AntFusion\Pages; class NewPage extends \Addons\AntFusion\Page { public function components() { return [ ]; } }
Actions
-
Create a new Action class
<?php namespace App\AntFusion\Actions; use Addons\AntFusion\Action; class NewAction extends Action { // protected $name = 'Custom Label Name'; // protected $standalone = true; // For non-inline action public function handle($request, $entries) { // $entry = $entries->first(); // For inline action } }
-
Add action to Resource / Page
public function actions() { return [ new \App\AntFusion\Actions\NewAction ]; } // OR (with confirmation message) public function actions() { return [ (new \App\AntFusion\Actions\NewAction)->confirmText('Are you sure?'), ]; }
Load record properties
To load record properties value to Action fields
class NewAction extends Action { public function __construct() { $this->withMeta(['load_record' => [ 'name' => 'name', 'contact_number' => 'profile.contact_number', ]]); } public function fields() { return [ Fusion::make('Name', 'name')->type('input'), Fusion::make('Contact Number', 'contact_number')->type('input'), ]; } }
Link
Simple link
use Addons\AntFusion\Actions\Link; Link::make('View', '/resource/user-list/view')->onlyInline();
Link base on model
use Addons\AntFusion\Actions\Link; Link::make('View', function($model) { return '/resource/user-list/'.$model->id.'/user-detail'; })->onlyInline(),
Filter
Define a new Filter
<?php namespace App\AntFusion\Filters; use Addons\AntFusion\Filter; class BookFilter extends Filter { const LISTED = 'listed'; const DELISTED = 'delisted'; public function apply($request, $query, $value) { if ($value == static::LISTED) { $query->listed(); } else if ($value == static::DELISTED) { $query->delisted(); } else { $query->listed(); } } public function options($request) { return [ 'Listed' => static::LISTED, 'Delisted' => static::DELISTED, ]; } }
Register a Filter to Resource
public function filters() { return [ new \App\AntFusion\Filters\BookFilter, ]; }
Components
Metric Card
Define a new Metric Card
<?php namespace App\AntFusion\Metrics; use Addons\AntFusion\Components\MetricCard; class Balance extends MetricCard { public function __construct() { $this->label('Balance')->icon('minus'); } public function calculate() { return $this->query()->sum('debit') - $this->query()->sum('credit'); } }
Register a Metric Card to resource
public function metrics() { return [ new \App\AntFusion\Metrics\Balance, ]; }
Panel
use Addons\AntFusion\Components\Panel; public function fields() { return [ Panel::make('', [ // Fields inside panel ]), ] }
Set width for panel
[ Panel::make('', [ // Fields inside panel ])->width('2/3'), Panel::make('', [ // Fields inside panel ])->width('1/3'), ]
Todo
- Enhance documentation
- Add feature to customize dashboard (high priority)
- Add access control/authorization
- Add relationship field
- Add metrics
- Add feature to build settings pages
- Add impersonation (low priority)
antweb/fusion-antfusion 适用场景与选型建议
antweb/fusion-antfusion 是一款 基于 JavaScript 开发的 Composer 扩展包,目前已累计 1.35k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2023 年 01 月 25 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「laravel」 「fusioncms」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 antweb/fusion-antfusion 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 antweb/fusion-antfusion 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 antweb/fusion-antfusion 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Command line downloader for FusionCMS.
Create bespoke website experiences.
Alfabank REST API integration
CLI tool to install FusionCMS
A FusionCMS addon.
A FusionCMS addon.
统计信息
- 总下载量: 1.35k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-01-25