components([ TextInput::make('author_name')->label('昵称')->disabled(), TextInput::make('author_email')->label('邮箱')->disabled(), TextInput::make('author_url')->label('网址')->disabled(), Textarea::make('content')->label('内容')->disabled()->rows(4), ]); } public function table(Table $table): Table { return $table ->columns([ TextColumn::make('author_name')->label('昵称'), TextColumn::make('content')->label('内容')->limit(40), TextColumn::make('status')->label('状态') ->badge() ->formatStateUsing(fn ($state) => match ($state) { 'published' => '已发布', 'pending' => '待审核', 'spam' => '垃圾', 'rejected' => '已拒绝', default => $state, }) ->color(fn ($state) => match ($state) { 'published' => 'success', 'pending' => 'warning', 'spam' => 'danger', 'rejected' => 'gray', default => 'gray', }), TextColumn::make('created_at')->label('时间')->dateTime('Y-m-d H:i'), ]) ->recordActions([ Action::make('approve') ->label('通过') ->color('success') ->visible(fn (Comment $record) => $record->status !== 'published') ->action(function (Comment $record) { if ($record->status !== 'published') { $record->post?->increment('comment_count'); } $record->update(['status' => 'published']); }), Action::make('reject') ->label('拒绝') ->color('danger') ->visible(fn (Comment $record) => $record->status !== 'rejected') ->action(fn (Comment $record) => $record->update(['status' => 'rejected'])), ]) ->recordUrl(null) ->recordAction(null) ->defaultSort('created_at', 'desc'); } }