get(ViewRenderer::class); // Test data matching the ML Dashboard $data = [ 'models' => [ [ 'model_name' => 'fraud-detector', 'version' => '1.0.0', 'type' => 'supervised', 'accuracy' => 0.94, 'status' => 'healthy', 'total_predictions' => 1234 ], [ 'model_name' => 'spam-classifier', 'version' => '2.0.0', 'type' => 'supervised', 'accuracy' => 0.78, 'status' => 'degraded', 'total_predictions' => 567 ], ], 'alerts' => [], 'summary' => [ 'total_models' => 2, 'healthy_models' => 1, 'degraded_models' => 1 ] ]; // Create render context $context = new RenderContext( template: 'admin/ml-dashboard', metaData: new MetaData('ML Dashboard', ''), data: $data, controllerClass: null ); echo "=== TESTING FULL TEMPLATE PIPELINE ===\n\n"; echo "Data being passed:\n"; print_r($data); echo "\n"; try { echo "=== RENDERING TEMPLATE ===\n"; $html = $viewRenderer->render($context); echo "=== CHECKING FOR FOREACH ATTRIBUTES IN OUTPUT ===\n"; if (str_contains($html, 'foreach=')) { echo "❌ PROBLEM: foreach attribute found in output (not processed)\n"; // Show the problematic section preg_match('/]*foreach[^>]*>.*?<\/tr>/s', $html, $matches); if (!empty($matches)) { echo "Found:\n" . $matches[0] . "\n\n"; } } else { echo "✅ Good: No foreach attributes in output\n\n"; } echo "=== CHECKING FOR PLACEHOLDERS IN OUTPUT ===\n"; if (preg_match('/{{[^}]+}}/', $html, $matches)) { echo "❌ PROBLEM: Unreplaced placeholders found\n"; echo "Example: " . $matches[0] . "\n\n"; } else { echo "✅ Good: No unreplaced placeholders\n\n"; } echo "=== CHECKING FOR MODEL DATA IN OUTPUT ===\n"; if (str_contains($html, 'fraud-detector')) { echo "✅ Good: Model data found in output\n"; } else { echo "❌ PROBLEM: Model data NOT found in output\n"; } if (str_contains($html, '1.0.0')) { echo "✅ Good: Version data found in output\n"; } else { echo "❌ PROBLEM: Version data NOT found in output\n"; } // Show a snippet of the models table echo "\n=== MODELS TABLE SECTION ===\n"; if (preg_match('/]*>.*?<\/tbody>/s', $html, $matches)) { echo substr($matches[0], 0, 500) . "...\n"; } } catch (\Exception $e) { echo "❌ ERROR: " . $e->getMessage() . "\n"; echo "Trace:\n" . $e->getTraceAsString() . "\n"; }