/** * Check if template exists, then if not exists. * * @return void */ public function testToolTemplateExists() { $loader = new \Twig_Loader_Filesystem(\realpath(__DIR__ . '/src/Resources/views')); $twig = new \Twig_Environment($loader); $this->assertTrue(Utils::templateExists($twig, 'test.html.twig')); $this->assertNotTrue(Utils::templateExists($twig, 'non-existing.html.twig')); }
/** * @internal * * Handle errors and exceptions thrown by entire application. * * @param \Exception $ex Any exception * @param integer $code HTTP status code * * @return Response Response to the client with nice error page */ public function minionError(\Exception $ex, $code) { $handler = new ExceptionHandler($this['debug']); $exception = FlattenException::create($ex); $response = Response::create($handler->getHtml($exception), $code, $exception->getHeaders())->setCharset(\ini_get('default_charset')); if ($this['debug']) { return $response; } else { $content = <<<'HTML' <!DOCTYPE html> <html> <head><title>Error %d</title></head> <body><h1>Error %d occured</h1></body> </html> HTML; if ($this['minion.useTwig']) { $twig = $this['twig']; $tpl = "Static/{$code}.html.twig"; if (!Utils::templateExists($twig, $tpl)) { $content = \str_replace('%d', $code, $content); } else { $content = $twig->render($tpl, ['exception' => $ex]); } } elseif (\file_exists($tpl = Utils::fixPath($this->getRootDir() . "/Static/{$code}.html.php"))) { $content = Utils::renderPhpTemplate($tpl, ['exception' => $ex]); } $response->setStatusCode($code); $response->setContent($content); return $response; } }