Фильтр перед маршрутизацией и sfStopExceptions - PullRequest
0 голосов
/ 28 марта 2011

Я хотел бы создать фильтр, который будет работать до того, как это сделает система маршрутизации, и мне интересно, возможно ли это.

В частности, я хотел бы сам анализировать и перенаправлять URL-адреса в определенных ситуациях, используя фильтр.URL, которые нужно было проанализировать с помощью моего фильтра, в противном случае будут проходить через все правила в моем routing.yml.

В настоящее время я запускаю фильтр сначала в filters.yml, но когда мне нужноперенаправление в моем фильтре происходит множество плохих вещей:

  1. sfStopExceptions и sfError404Exception Исключения все равно выбрасываются и загромождают мои журналы (см. эту ошибку: http://trac.symfony -project.org / ticket / 4741)
  2. В моем журнале я вижу целую кучу таких строк:

[Пн, март 07 14:24:48 2011] [ошибка] [клиент 67.184.53.79] FastCGI: сервер "/var/local/fcgi/php-cgi-wrapper.fcgi" stderr: пустой модуль и / или действие после анализа URL "/files/beezee50.png" (/)., referer: http://bee -zee-body-shop.blahblah.mobi / bee-zee-body-shop

[Пн. Март 07 14:24:53 2011] [ошибка] [клиент67.184.53.79] FastCGI: сервер "/var/local/fcgi/php-cgi-wrapper.fcgi" stderr: действие "beezeebodyshop / index" не существует.

Если я смогуспешное перенаправление до того, как была выполнена маршрутизация, этого не должно происходить.

1 Ответ

2 голосов
/ 28 марта 2011

Я бы создал подкласс sfPatternRouting (который является наиболее распространенным экземпляром sfRouting, настроенным в файле приложения factories.yml), чтобы обрабатывать те особые случаи, к которым нужно обращаться, и делать обычные вещи в противном случае.
Вы можете настроить свой новый класс маршрутизации следующим образом в factories.yml:

all:
  routing:
    class: yourAdvancedRouting
    param:
      generate_shortest_url:            true
      extra_parameters_as_query_string: true
      any_other_param_you_need:         value
...