antweb / fusion-antfusion
一个FusionCMS插件。
0.2.1
2024-06-27 16:38 UTC
Requires
- php: ^7.3|^8.0
- fusioncms/cms: *
- maatwebsite/excel: *
README
为FusionCMS(beta.getfusioncms.com)构建的插件,受Laravel Nova(nova.laravel.com)启发。
安装
composer require antweb/fusion-antfusion
然后,在app
文件夹下创建一个名为AntFusion
的文件夹。
然后,在AntFusion
文件夹中创建一个名为Resource.php
的文件,通过复制以下代码
<?php namespace App\AntFusion; abstract class Resource extends \Addons\AntFusion\Resource { }
基本用法
-
创建一个新的资源文件
<?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, ]; } }
-
将此行放入
AppServiceProvider
或任何你喜欢的服务提供者中(new \App\AntFusion\NewResource)->register();
-
登录FusionCMS管理面板,你应该能在菜单中看到一个新页面。
路由
-
注册页面或资源的路由
Route::antfusionAdmin('/path', App\AntFusion\TestPage::class); // OR Route::antfusionAdmin('/path', App\AntFusion\TestResource::class);
资源
-
更改资源的URL别名
class NewResource extends Resource { protected $slug = 'user-list'; }
-
更改资源的图标
class NewResource extends Resource { protected $icon = 'users'; }
-
更改资源的页面标题
class NewResource extends Resource { protected $name= 'Users'; }
页面
-
创建一个新的页面类
<?php namespace App\AntFusion\Pages; class NewPage extends \Addons\AntFusion\Page { public function components() { return [ ]; } }
动作
-
创建一个新的动作类
<?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 } }
-
将动作添加到资源/页面
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?'), ]; }
加载记录属性
将记录属性值加载到动作字段中
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'), ]; } }
链接
简单链接
use Addons\AntFusion\Actions\Link; Link::make('View', '/resource/user-list/view')->onlyInline();
基于模型链接
use Addons\AntFusion\Actions\Link; Link::make('View', function($model) { return '/resource/user-list/'.$model->id.'/user-detail'; })->onlyInline(),
过滤器
定义一个新的过滤器
<?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, ]; } }
将过滤器注册到资源
public function filters() { return [ new \App\AntFusion\Filters\BookFilter, ]; }
组件
度量卡
定义一个新的度量卡
<?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'); } }
将度量卡注册到资源
public function metrics() { return [ new \App\AntFusion\Metrics\Balance, ]; }
面板
use Addons\AntFusion\Components\Panel; public function fields() { return [ Panel::make('', [ // Fields inside panel ]), ] }
设置面板宽度
[ Panel::make('', [ // Fields inside panel ])->width('2/3'), Panel::make('', [ // Fields inside panel ])->width('1/3'), ]
待办事项
- 增强文档
- 添加自定义仪表板功能(高优先级)
- 添加访问控制/授权
- 添加关系字段
- 添加度量
- 添加构建设置页面的功能
- 添加伪装(低优先级)