cubicmushroom/symfony-error-redirect

Symfony 扩展,提供带有闪存消息的简单重定向

dev-master 2014-07-29 07:11 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:03:29 UTC


README

简介

Symfony2 扩展,提供方便地从调用堆栈的任何位置重定向用户并显示消息的服务。

它通过抛出 MessageRedirectException 实现此功能,然后由 MessageRedirectListener 捕获,该监听器将消息添加到会话的 flashBag 中,然后将用户重定向到指定的 URI。

如果将先前异常传递给 MessageRedirectException,并且当前环境已启用调试,则异常将不会触发重定向,并且将向用户显示异常,包括抛出的先前异常。

安装

要使用此扩展,请按照以下步骤操作...

  1. 使用 composer 添加扩展

     "require": {
         "cubicmushroom/symfony-error-redirect": "dev-master"
     }
    
  2. 在 app/AppKernel.php 中注册扩展

     class AppKernel extends Kernel
     {
         // ...
    
         public function registerBundles()
         {
             $bundles = array(
                 // ...
                 new CubicMushroom\MessageRedirectBundle\CubicMushroomMessageRedirectBundle(),
             );
             
             // ...
     
             return $bundles;
         }
         
         // ...
     }
    
  3. 将消息模板添加到您的视图模板(可能最好在基本模板级别添加,以避免在每个视图中都记住这样做)

     {{ include('CubicMushroomMessageRedirectBundle:elements:message.html.twig') }}
    

    要添加自己的类到闪存消息中,在调用 include 之前定义 flashClasses twig 变量

     {% set flashClasses = 'alert' %}
     {{ include('CubicMushroomMessageRedirectBundle:elements:message.html.twig') }}
    

使用方法

重定向

有 1 种重定向方式...

  1. 使用服务的方法 createRedirectWithMessage() 并从控制器中返回它。

     // If within object with a Container object
     return $this->container->get('message_redirect')->createRedirectWithMessage( $uri, $message, $messageClass );
    
  2. 创建并抛出 RedirectMessageException

     // If within object with a Container object
     thrown $this->container->get('message_redirect')->createRedirectException(
         $uri,
         $message,          // optional
         messageType,       // optional
         $previousException // optional
     );
    

使用不同的异常类重定向

要使用自己的异常类进行重定向,只需将 %message_redirect.exception.message_redirect.class% 参数设置为另一个实现 \CubicMushroom\MessageRedirectBundle\Exception\MessageRedirectExceptionInterface 接口的异常类。

要在一个单一请求中使用自己的异常,可以通过以下操作在服务上设置异常类...

$this->container->get('message_redirect')->setMessageRedirectExceptionClass( $class );
// Then call createRedirectWithMessage() to create the exception to throw