2011-03-28 64 views
0

我想创建一个过滤器,在路由系统 之前运行,并且想知道这是否可能。路由之前的过滤器和sfStopExceptions

具体而言,我想使用过滤器自己在某些情况下解析和重定向网址 。需要使用我的过滤器解析 的网址否则将落入我的 routing.yml中的所有规则。

目前我在做什么,首先运行该过滤器filters.yml, 但是当我需要在我的过滤器重定向各种不好的事情发生 :

  1. sfStopExceptions和sfError404Exceptions无论如何不会抛出和 弄乱我的日志(见这个错误:http://trac.symfony-project.org/ticket/4741
  2. 我收到了一大堆行这样在我的日志:

[Mon Mar 07 14:24:48 2011] [error] [client 67.184.53.79] FastCGI: server“/var/local/fcgi/php-cgi-wrapper.fcgi”stderr:Empty module and/ or解析URL “/files/beezee50.png”(/)之后的动作,引用者: http://bee-zee-body-shop.blahblah.mobi/bee-zee-body-shop

[周一3月7日14时24分53秒2011] [错误] [客户67.184.53.79] FastCGI的: 服务器“/var/local/fcgi/php-cgi-wrapper.fcgi”stderr:操作 “beezeebodyshop/index”不存在。

如果我能够在路由完成之前成功重定向,则 都不会发生。

+0

Noramlly我想解决这样的事情与重写,重定向,或在.htaccess RedirectMatch规则...如果它是如此复杂它需要用php解析,然后我可能会做一个自定义的路由和/或路由类。你能否告诉我们为什么你试图用过滤器重定向? – prodigitalson 2011-03-28 15:07:52

回答

2

我会继承sfPatternRouting(这是在应用程序的factories.yml文件中配置的最常见的sfRouting实例),以处理那些需要解决的特殊情况,并在其他情况下执行常规操作。
你可以设置你的新的路由类像这样在factories.yml文件:

all: 
    routing: 
    class: yourAdvancedRouting 
    param: 
     generate_shortest_url:   true 
     extra_parameters_as_query_string: true 
     any_other_param_you_need:   value 
+0

不错,我不知道我可以轻松地覆盖路由系统逻辑!谢谢。 – 2011-03-29 13:33:08