You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Filament 4中如何为仪表盘页面小部件过滤器设置默认值?

解决Filament 4仪表盘Filters Form中DatePicker默认值无效的问题

在Filament 4的HasFiltersForm特性中,直接给表单组件添加->default()不会生效——因为筛选表单的状态是通过页面属性来管理的,正确做法是通过初始化页面属性设置默认值:

  1. 添加公共属性存储筛选值
    在Dashboard类中定义与DatePicker字段名对应的公共属性:
public ?Carbon $startDate = null;
public ?Carbon $endDate = null;
  1. 在mount方法中初始化默认值
    重写页面的mount方法,为属性设置默认值:
use Carbon\Carbon;

// ...

public function mount(): void
{
    parent::mount();
    
    $this->startDate = Carbon::now()->subWeek();
    $this->endDate = Carbon::now()->addWeek();
}
  1. 调整filtersForm方法
    去掉->default()调用,Filament会自动将表单字段与页面属性绑定:
public function filtersForm(Schema $schema): Schema
{
    return $schema
        ->components([
            Section::make()
                ->schema([
                    DatePicker::make('startDate'),
                    DatePicker::make('endDate'),
                ])
        ]);
}

完整修改后的代码:

use Filament\Forms\Components\DatePicker;
use Filament\Pages\Dashboard as BaseDashboard;
use Filament\Pages\Dashboard\Concerns\HasFiltersForm;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;
use Carbon\Carbon;

class Dashboard extends BaseDashboard
{
    use HasFiltersForm;
    
    public ?Carbon $startDate = null;
    public ?Carbon $endDate = null;

    public function mount(): void
    {
        parent::mount();
        
        $this->startDate = Carbon::now()->subWeek();
        $this->endDate = Carbon::now()->addWeek();
    }

    public function filtersForm(Schema $schema): Schema
    {
        return $schema
            ->components([
                Section::make()
                    ->schema([
                        DatePicker::make('startDate'),
                        DatePicker::make('endDate'),
                    ])
            ]);
    }
}

原理说明:HasFiltersForm特性会自动将表单字段与页面的公共属性双向绑定,页面挂载时初始化属性值,会自动同步到表单组件中,这是Filament筛选表单的标准状态管理方式,替代了普通表单的->default()方法。

内容的提问来源于stack exchange,提问作者lchristmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 18:42:11