Custom Exception
- ExceptionController
namespace KitBaseBundle\Controller;
use Symfony\Bundle\TwigBundle\Controller\ExceptionController as BaseController;
use Symfony\Component\HttpFoundation\Request;
use KitAdminBundle\Service\ThemeService;
class ExceptionController extends BaseController
{
private $theme;
public function __construct(\Twig_Environment $twig, $debug,ThemeService $theme)
{
parent::__construct($twig, $debug);
$this->theme = $theme;
}
/**
* @param Request $request
* @param string $format
* @param int $code An HTTP response status code
* @param bool $showException
*
* @return string
*/
protected function findTemplate(Request $request, $format, $code, $showException)
{
$themeName = $this->theme->get();
$name = $showException ? 'exception' : 'error';
if ($showException && 'html' == $format) {
$name = 'exception_full';
}
// For themes error pages
if (!$showException) {
$template = sprintf('@KitWeb/theme/'.$themeName.'/Exception/%s%s.%s.twig', $name, $code, $format);
if ($this->templateExists($template)) {
return $template;
}
}
// try to find a template for the given format
$template = sprintf('@KitWeb/theme/'.$themeName.'/Exception/%s.%s.twig', $name, $format);
if ($this->templateExists($template)) {
return $template;
}
return parent::findTemplate($request, $format, $code, $showException);
}
}
- ThemeService.php
<?php
namespace KitAdminBundle\Service;
class ThemeService
{
/**
*
* @var \Doctrine\Bundle\DoctrineBundle\Registry
*/
private $doctrine;
public function __construct($doctrine)
{
$this->doctrine = $doctrine;
}
public function get($default = 'Default')
{
/**
*
* @var \KitAdminBundle\Repository\ThemeRepository $repo
*/
$repo = $this->doctrine->getRepository('KitAdminBundle:Theme');
$theme = $repo->findOneBy([
'status' => 1
]);
return (!empty($theme) && !empty($theme->getPath())) ? $theme->getPath() : $default;
}
}
-
config.yml
# Twig Configuration twig: .... exception_controller: twig.controller.exception:showAction
-
service.yml
kit_admin.theme_service: class: KitAdminBundle\Service\ThemeService arguments: ["@doctrine"] twig.controller.exception: class: KitBaseBundle\Controller\ExceptionController arguments: ['@twig','%kernel.debug%', '@kit_admin.theme_service']
-
views
# KitWebBundle/Resources/views/theme/Luxe/Exception/error.html.twig <h2>{{ theme_name }} self excption error</h2>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。