mirror of
https://github.com/wallabag/wallabag.git
synced 2024-11-26 19:11:07 +00:00
Customize errors templates
All error goes to the same template which only display the error message and the status code.
This commit is contained in:
parent
114c55c0a6
commit
40e219622a
7 changed files with 107 additions and 9 deletions
|
@ -64,6 +64,7 @@ twig:
|
||||||
strict_variables: "%kernel.debug%"
|
strict_variables: "%kernel.debug%"
|
||||||
form_themes:
|
form_themes:
|
||||||
- "LexikFormFilterBundle:Form:form_div_layout.html.twig"
|
- "LexikFormFilterBundle:Form:form_div_layout.html.twig"
|
||||||
|
exception_controller: wallabag_core.exception_controller:showAction
|
||||||
|
|
||||||
# Doctrine Configuration
|
# Doctrine Configuration
|
||||||
doctrine:
|
doctrine:
|
||||||
|
|
40
src/Wallabag/CoreBundle/Controller/ExceptionController.php
Normal file
40
src/Wallabag/CoreBundle/Controller/ExceptionController.php
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Wallabag\CoreBundle\Controller;
|
||||||
|
|
||||||
|
use Symfony\Bundle\TwigBundle\Controller\ExceptionController as BaseExceptionController;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This controller allow us to customize the error template.
|
||||||
|
* The only modified line from the parent template is for "WallabagCoreBundle".
|
||||||
|
*/
|
||||||
|
class ExceptionController extends BaseExceptionController
|
||||||
|
{
|
||||||
|
protected function findTemplate(Request $request, $format, $code, $showException)
|
||||||
|
{
|
||||||
|
$name = $showException ? 'exception' : 'error';
|
||||||
|
if ($showException && 'html' == $format) {
|
||||||
|
$name = 'exception_full';
|
||||||
|
}
|
||||||
|
|
||||||
|
// For error pages, try to find a template for the specific HTTP status code and format
|
||||||
|
if (!$showException) {
|
||||||
|
$template = sprintf('WallabagCoreBundle:Exception:%s.%s.twig', $name, $format);
|
||||||
|
if ($this->templateExists($template)) {
|
||||||
|
return $template;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// try to find a template for the given format
|
||||||
|
$template = sprintf('@Twig/Exception/%s.%s.twig', $name, $format);
|
||||||
|
if ($this->templateExists($template)) {
|
||||||
|
return $template;
|
||||||
|
}
|
||||||
|
|
||||||
|
// default to a generic HTML exception
|
||||||
|
$request->setRequestFormat('html');
|
||||||
|
|
||||||
|
return sprintf('@Twig/Exception/%s.html.twig', $showException ? 'exception_full' : $name);
|
||||||
|
}
|
||||||
|
}
|
|
@ -49,7 +49,7 @@ class UsernameRssTokenConverter implements ParamConverterInterface
|
||||||
$em = $this->registry->getManagerForClass($configuration->getClass());
|
$em = $this->registry->getManagerForClass($configuration->getClass());
|
||||||
|
|
||||||
// Check, if class name is what we need
|
// Check, if class name is what we need
|
||||||
if ('Wallabag\UserBundle\Entity\User' !== $em->getClassMetadata($configuration->getClass())->getName()) {
|
if (null !== $em && 'Wallabag\UserBundle\Entity\User' !== $em->getClassMetadata($configuration->getClass())->getName()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,9 +69,8 @@ class UsernameRssTokenConverter implements ParamConverterInterface
|
||||||
$username = $request->attributes->get('username');
|
$username = $request->attributes->get('username');
|
||||||
$rssToken = $request->attributes->get('token');
|
$rssToken = $request->attributes->get('token');
|
||||||
|
|
||||||
// Check, if route attributes exists
|
if (!$request->attributes->has('username') || !$request->attributes->has('token')) {
|
||||||
if (null === $username || null === $rssToken) {
|
return false;
|
||||||
throw new \InvalidArgumentException('Route attribute is missing');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get actual entity manager for class
|
// Get actual entity manager for class
|
||||||
|
|
|
@ -133,3 +133,9 @@ services:
|
||||||
host: '%redis_host%'
|
host: '%redis_host%'
|
||||||
port: '%redis_port%'
|
port: '%redis_port%'
|
||||||
schema: tcp
|
schema: tcp
|
||||||
|
|
||||||
|
wallabag_core.exception_controller:
|
||||||
|
class: Wallabag\CoreBundle\Controller\ExceptionController
|
||||||
|
arguments:
|
||||||
|
- '@twig'
|
||||||
|
- '%kernel.debug%'
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||||
|
|
||||||
|
{% block title %}{{ 'error.page_title'|trans }}{% endblock %}
|
||||||
|
|
||||||
|
{% block body_class %}login{% endblock %}
|
||||||
|
|
||||||
|
{% block menu %}{% endblock %}
|
||||||
|
{% block messages %}{% endblock %}
|
||||||
|
{% block header %}{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<main class="valign-wrapper">
|
||||||
|
<div class="valign row">
|
||||||
|
<div class="card sw">
|
||||||
|
<div class="center"><img src="{{ asset('bundles/wallabagcore/themes/_global/img/logo-w.png') }}" alt="wallabag logo" /></div>
|
||||||
|
<h2>{{ status_code }}: {{ status_text }}</h2>
|
||||||
|
<p>{{ exception.message }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block footer %}
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||||
|
|
||||||
|
{% block title %}{{ 'error.page_title'|trans }}{% endblock %}
|
||||||
|
|
||||||
|
{% block body_class %}login{% endblock %}
|
||||||
|
|
||||||
|
{% block menu %}{% endblock %}
|
||||||
|
{% block messages %}{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<main class="valign-wrapper">
|
||||||
|
<div class="valign row">
|
||||||
|
<div class="card sw">
|
||||||
|
<div class="center"><img src="{{ asset('bundles/wallabagcore/themes/_global/img/logo-other_themes.png') }}" alt="wallabag logo" /></div>
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="row">
|
||||||
|
<h5>{{ status_code }}: {{ status_text }}</h5>
|
||||||
|
<p>{{ exception.message }}</p>
|
||||||
|
{# {% for trace in exception.trace %}
|
||||||
|
<p>{{ trace.class }} - {{ trace.type }} - {{ trace.file }} - {{ trace.line }}</p>
|
||||||
|
{% endfor %} #}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block footer %}
|
||||||
|
{% endblock %}
|
|
@ -125,16 +125,14 @@ class UsernameRssTokenConverterTest extends \PHPUnit_Framework_TestCase
|
||||||
$this->assertTrue($converter->supports($params));
|
$this->assertTrue($converter->supports($params));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @expectedException InvalidArgumentException
|
|
||||||
* @expectedExceptionMessage Route attribute is missing
|
|
||||||
*/
|
|
||||||
public function testApplyEmptyRequest()
|
public function testApplyEmptyRequest()
|
||||||
{
|
{
|
||||||
$params = new ParamConverter([]);
|
$params = new ParamConverter([]);
|
||||||
$converter = new UsernameRssTokenConverter();
|
$converter = new UsernameRssTokenConverter();
|
||||||
|
|
||||||
$converter->apply(new Request(), $params);
|
$res = $converter->apply(new Request(), $params);
|
||||||
|
|
||||||
|
$this->assertFalse($res);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue