Files
KnowledgeBase/app/Filament/Resources/TerminalResource/Pages/EditTerminal.php
lizhuoran 6a6c59e3e4 feat(阶段三): 实现终端管理基础功能
- 创建 TerminalResource 及其所有页面(列表、创建、编辑、查看)
- 实现终端基本信息管理(名称、编码、IP、线站、组态图)
- 添加显示配置管理(KeyValue 组件)
- 实现在线状态显示和筛选
- 添加按线站分组功能
- 创建 TerminalPolicy 权限策略
- 支持搜索、排序、批量删除等功能
2026-03-09 10:59:29 +08:00

74 lines
2.0 KiB
PHP

<?php
namespace App\Filament\Resources\TerminalResource\Pages;
use App\Filament\Resources\TerminalResource;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
class EditTerminal extends EditRecord
{
protected static string $resource = TerminalResource::class;
protected function getHeaderActions(): array
{
return [
Actions\ViewAction::make()
->label('查看'),
Actions\DeleteAction::make()
->label('删除'),
];
}
protected function getRedirectUrl(): string
{
return $this->getResource()::getUrl('index');
}
protected function getSavedNotificationTitle(): ?string
{
return '终端更新成功';
}
protected function mutateFormDataBeforeFill(array $data): array
{
// 加载提示词数据到表单
if ($this->record->prompt) {
$data['prompt'] = [
'prompt_template' => $this->record->prompt->prompt_template,
'variables' => $this->record->prompt->variables,
];
}
return $data;
}
protected function mutateFormDataBeforeSave(array $data): array
{
// 提取提示词数据,稍后单独处理
$this->promptData = $data['prompt'] ?? null;
unset($data['prompt']);
return $data;
}
protected function afterSave(): void
{
// 更新或创建提示词
if (!empty($this->promptData['prompt_template'])) {
$this->record->prompt()->updateOrCreate(
['terminal_id' => $this->record->id],
[
'prompt_template' => $this->promptData['prompt_template'],
'variables' => $this->promptData['variables'] ?? [],
]
);
} elseif ($this->record->prompt) {
// 如果提示词模板为空,删除现有提示词
$this->record->prompt()->delete();
}
}
private ?array $promptData = null;
}