EditTextbookSeries.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace App\Filament\Resources\TextbookSeriesResource\Pages;
  3. use App\Filament\Resources\TextbookSeriesResource;
  4. use Filament\Resources\Pages\EditRecord;
  5. use Illuminate\Support\Str;
  6. class EditTextbookSeries extends EditRecord
  7. {
  8. protected static string $resource = TextbookSeriesResource::class;
  9. protected function mutateFormDataBeforeSave(array $data): array
  10. {
  11. // 如果 slug 为空且 name 不为空,尝试生成
  12. if (empty($data['slug']) && !empty($data['name'])) {
  13. $data['slug'] = $this->generateSlug($data['name']);
  14. }
  15. return $data;
  16. }
  17. /**
  18. * 生成 slug(简化版)
  19. */
  20. private function generateSlug(string $name): string
  21. {
  22. // 常见的教材系列名称到 slug 的映射
  23. $mapping = [
  24. '人教版' => 'pep',
  25. '北师大版' => 'bsd',
  26. '华东师大版' => 'ecnu',
  27. '苏教版' => 'sjb',
  28. '鲁教版' => 'ljb',
  29. '冀教版' => 'hbb',
  30. '沪教版' => 'shjb',
  31. '粤教版' => 'gdjb',
  32. '教科版' => 'jckb',
  33. '外研版' => 'wyjb',
  34. '湘教版' => 'xnjb',
  35. '长春版' => 'ccb',
  36. '语文版' => 'ywb',
  37. '数学版' => 'sxb',
  38. '英语版' => 'yyb',
  39. ];
  40. // 先查找映射
  41. foreach ($mapping as $chinese => $slug) {
  42. if (strpos($name, $chinese) !== false) {
  43. return $slug;
  44. }
  45. }
  46. // 如果没有找到映射,使用 slugify
  47. return Str::slug($name);
  48. }
  49. }