资讯专栏INFORMATION COLUMN

Symfony笔记之--自定义异常提示

libxd / 1690人阅读

Custom Exception

ExceptionController

    namespace KitBaseBundleController;
    
    use SymfonyBundleTwigBundleControllerExceptionController as BaseController;
    use SymfonyComponentHttpFoundationRequest;
    use KitAdminBundleServiceThemeService;
    
    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

doctrine = $doctrine;
    }
    
    public function get($default = "Default")
    {
        /**
         *
         * @var KitAdminBundleRepositoryThemeRepository $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: KitAdminBundleServiceThemeService
    arguments: ["@doctrine"]
twig.controller.exception:
    class: KitBaseBundleControllerExceptionController
    arguments: ["@twig","%kernel.debug%", "@kit_admin.theme_service"]

views

# KitWebBundle/Resources/views/theme/Luxe/Exception/error.html.twig

{{ theme_name }} self excption error

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28123.html

相关文章

  • Symfony笔记--控制器的快捷方法

    摘要:获取服务重定向生成路由的返回一个添加一个判断是否授权进入某个方法判断用户是否授权,否,抛出异常手动判断是否合法把请求转发到其他控制器和方法第二个参数为上占位符参数,第三个为其他额外的参数文件下载简单用法示例如果是之类, Shortcuts methods in Controller 1. 获取服务 $this->get($serviceId); 2. 重定向 ...

    loonggg 评论0 收藏0
  • symfony笔记--基础常用知识点

    摘要:获取登录用户信息控制器中等价于中游客用户密码加密校验密码密码加密文件上传相关获取上传的文件不为空未上传获取根目录和获取当前路由名称 Symfony Basic 获取登录用户信息 控制器中 $this->getUser(); //等价于 $this->get(security.token_storage) ->getToken() ->g...

    Jensen 评论0 收藏0
  • 【Laravel】Laravel 框架关键技术解析·读书笔记(二)

    摘要:框架关键技术解析读书笔记二第五章框架应用程序根目录版本默认的框架应用程序是符合规范的,所以相应的目录结构也是基本固定的,不同的目录加载了功能文件,如果添加了新的目录,需要在文件中添加规范的自动加载部分并执行命令。 Laravel 框架关键技术解析·读书笔记(二) 第五章 框架应用程序根目录(5.1版本) 默认的Laravel框架应用程序是符合PSR规范的,所以相应的目录结构也是基本...

    TIGERB 评论0 收藏0
  • Laravel 学习笔记 Toran Proxy 搭建私有Packagist镜像

    摘要:可以使用来做,也是作者开发的,可靠性也有保证。不管怎样,总会遇到很多不仅仅一个需要的,这个具有公用性的就可以做成一个放在公司内部搭建的镜像上,这也极大提高整体的开发效率。 随着业务越来越复杂,有些service具有通用性,即Repo A中的某一service其他的几个Repo都会不同程度的需要,如果能把该service作为一个独立的package,这样其他的Repo可以composer...

    senntyou 评论0 收藏0
  • Python 3 学习笔记——错误和异常

    摘要:异常即使程序的语法是正确的,但是在运行的时候,也有可能发生错误,运行期监测到的错误称为异常。此时可以打印出错误信息,然后再次把异常抛出。这个子句将在子句没有发生任何异常的时候执行。异常类继承自,可以直接继承,或者间接继承。 1. 语法错误 Python 的语法错误被称为解析错,语法分析器会指出出错的代码行,并且在最先找到的错误的位置标记一个小小的箭头。 >>> while True ...

    techstay 评论0 收藏0

发表评论

0条评论

libxd

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<