Example #1
0
 /**
  * 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'));
 }
Example #2
0
    /**
     * @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;
        }
    }