EditEsg.php 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Filament\Resources\EsgResource\Pages;
  3. use App\Filament\Resources\EsgResource;
  4. use Filament\Actions;
  5. use Filament\Resources\Pages\EditRecord;
  6. use Illuminate\Database\Eloquent\Model;
  7. use App\Traits\HandlesEsgParagraphs;
  8. class EditEsg extends EditRecord
  9. {
  10. use HandlesEsgParagraphs;
  11. protected static string $resource = EsgResource::class;
  12. protected function getRedirectUrl(): string
  13. {
  14. return $this->getResource()::getUrl('index');
  15. }
  16. /**
  17. * 在填充表單前處理資料 - 手動載入關聯資料
  18. */
  19. protected function mutateFormDataBeforeFill(array $data): array
  20. {
  21. // ✅ 使用 Trait 方法載入並格式化 paragraphs
  22. $data['paragraphs'] = $this->loadAndFormatParagraphs($this->record);
  23. return $data;
  24. }
  25. protected function mutateFormDataBeforeSave(array $data): array
  26. {
  27. return $data;
  28. }
  29. /**
  30. * 儲存時的處理
  31. */
  32. protected function handleRecordUpdate(Model $record, array $data): Model
  33. {
  34. // ✅ 使用 Trait 方法處理表單中的 paragraphs
  35. $processedParagraphs = $this->processFormParagraphs();
  36. // 更新主記錄
  37. $record->update($data);
  38. // ✅ 使用 Trait 方法處理 paragraphs 關聯
  39. if ($processedParagraphs) {
  40. $this->updateParagraphs($record, $processedParagraphs);
  41. }
  42. return $record->refresh();
  43. }
  44. }