CreateTextbookSeries.php 1.7 KB

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