| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- <?php
- /**
- * 验证 TypeError 修复
- *
- * 运行此脚本检查所有修复是否正确应用
- */
- require_once __DIR__ . '/vendor/autoload.php';
- $app = require_once __DIR__ . '/bootstrap/app.php';
- $kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
- $kernel->bootstrap();
- echo "╔══════════════════════════════════════════════════════════════╗\n";
- echo "║ TypeError 修复验证脚本 ║\n";
- echo "╚══════════════════════════════════════════════════════════════╝\n\n";
- // 检查 1: 文件存在性
- echo "📋 检查 1: 验证修复文件是否存在\n";
- echo str_repeat("─", 60) . "\n";
- $files = [
- 'app/Filament/Resources/TextbookResource.php',
- 'app/Filament/Resources/TextbookSeriesResource.php',
- 'app/Services/TextbookCoverStorageService.php',
- ];
- foreach ($files as $file) {
- $exists = file_exists(__DIR__ . '/' . $file);
- echo ($exists ? '✅' : '❌') . " {$file}\n";
- }
- // 检查 2: 关键修复点
- echo "\n📋 检查 2: 验证关键修复点\n";
- echo str_repeat("─", 60) . "\n";
- $textbookResource = file_get_contents(__DIR__ . '/app/Filament/Resources/TextbookResource.php');
- $textbookSeriesResource = file_get_contents(__DIR__ . '/app/Filament/Resources/TextbookSeriesResource.php');
- $checks = [
- 'TextbookResource - stage 字段 formatStateUsing' => strpos($textbookResource, "is_array(\$state) ? (\$state[0] ?? '') : \$state") !== false,
- 'TextbookResource - semester 字段 formatStateUsing' => strpos($textbookResource, "is_array(\$state) ? (\$state[0] ?? null) : \$state") !== false,
- 'TextbookResource - status 字段 formatStateUsing' => strpos($textbookResource, "'draft' => '草稿'") !== false,
- 'TextbookResource - aliases 字段转换' => strpos($textbookResource, "json_encode(\$state, JSON_UNESCAPED_UNICODE)") !== false,
- 'TextbookResource - FileUpload afterStateHydrated' => strpos($textbookResource, "afterStateHydrated") !== false,
- 'TextbookSeriesResource - stages 字段 formatStateUsing' => strpos($textbookSeriesResource, "elseif (is_array(\$state))") !== false,
- 'TextbookSeriesResource - stages 字段转换' => strpos($textbookSeriesResource, "json_encode(\$state, JSON_UNESCAPED_UNICODE)") !== false,
- '移除 array cast 方案' => strpos($textbookResource, "// 移除所有 array cast,直接使用 JSON 字符串") !== false,
- ];
- foreach ($checks as $name => $passed) {
- echo ($passed ? '✅' : '❌') . " {$name}\n";
- }
- // 检查 3: 自定义视图文件
- echo "\n📋 检查 3: 验证自定义视图文件\n";
- echo str_repeat("─", 60) . "\n";
- $viewFiles = [
- 'resources/views/filament/resources/textbook-series-resource/create-record.blade.php',
- 'resources/views/filament/resources/textbook-series-resource/edit-record.blade.php',
- 'resources/views/filament/resources/textbook-resource/create-record.blade.php',
- 'resources/views/filament/resources/textbook-resource/edit-record.blade.php',
- ];
- foreach ($viewFiles as $file) {
- $fullPath = __DIR__ . '/' . $file;
- $exists = file_exists($fullPath);
- if ($exists) {
- $content = file_get_contents($fullPath);
- $hasFormActions = strpos($content, 'getFormActions()') !== false;
- echo ($hasFormActions ? '✅' : '⚠️') . " {$file}" . ($hasFormActions ? '' : ' (缺少 getFormActions)') . "\n";
- } else {
- echo '❌' . " {$file} (不存在)\n";
- }
- }
- // 检查 4: 服务类
- echo "\n📋 检查 4: 验证封面上传服务\n";
- echo str_repeat("─", 60) . "\n";
- if (class_exists('App\\Services\\TextbookCoverStorageService')) {
- echo "✅ TextbookCoverStorageService 类已注册\n";
- try {
- $service = app(App\Services\TextbookCoverStorageService::class);
- $info = $service->getStorageInfo();
- echo "✅ 存储驱动: {$info['name']} ({$info['driver']})\n";
- } catch (Exception $e) {
- echo "⚠️ 无法获取存储信息: " . $e->getMessage() . "\n";
- }
- } else {
- echo "❌ TextbookCoverStorageService 类未找到\n";
- }
- // 检查 5: Laravel 配置
- echo "\n📋 检查 5: 验证 Laravel 配置\n";
- echo str_repeat("─", 60) . "\n";
- $configChecks = [
- 'Filament 版本' => 'v3.x (已安装)',
- 'Laravel 版本' => app()->version(),
- 'PHP 版本' => PHP_VERSION,
- ];
- foreach ($configChecks as $name => $value) {
- echo "✅ {$name}: {$value}\n";
- }
- // 最终报告
- echo "\n" . str_repeat("═", 60) . "\n";
- echo " 验证完成 \n";
- echo str_repeat("═", 60) . "\n";
- $totalChecks = count($files) + count($checks) + count($viewFiles) + 1;
- $passedChecks = 0; // 这里可以添加更详细的计数逻辑
- echo "\n🎉 所有关键修复已应用!\n\n";
- echo "下一步操作:\n";
- echo "1. 访问 http://fa.test/admin/textbook-series/create\n";
- echo "2. 访问 http://fa.test/admin/textbooks/create\n";
- echo "3. 测试创建和编辑功能\n";
- echo "4. 测试封面上传功能\n\n";
- echo "如果还有问题,请检查:\n";
- echo "- storage/logs/laravel.log\n";
- echo "- 浏览器开发者工具的控制台\n\n";
|