2010-10-28 2 views
0

Я пишу успокаивающий XML-API для университетского задания, спецификация не требует внешнего интерфейса HTML.Как изменить формат по умолчанию для XML в Symfony?

Как представляется, не существует какой-либо документации (или угадываемой функциональности) относительно того, как изменить формат по умолчанию? Пока я создал все шаблоны как ...Success.xml.php, было бы проще просто использовать обычные и установить это глобально; Я действительно ожидал, что эта функциональность будет настраиваться с помощью YAML. Однако я нашел некоторые жестко закодированные ссылки на формат HTML.

Основная проблема, с которой я сталкиваюсь, заключается в том, что часть оценки возвращает определенное значение 404 (не как 404: /), но важно, чтобы он всегда возвращал XML и по умолчанию устанавливал отсутствующий маршрут это HTML 404, а не XML (поэтому он работает только тогда, когда я использую forward404 из действия, выполняемого через XML-маршрут.

Итак, есть ли способ сделать это/какие классы мне нужно переопределить ?

ответ

2

Попробуйте положить это в factories.yml

all: 
    request: 
    class: sfWebRequest 
    param: 
     default_format: xml 

Это все равно потребует изменения имен шаблонов. Это просто означает, что URL-адреса, которые не указывают формат, вернутся к xml вместо html.

Вы можете создать подкласс sfPHPView и переопределить метод Инициализировать, чтобы повлиять на это (копировать вставить метод Инициализировать из sfView) - эти строки, как этого требует замены:

if ('html' != $format) 

тогда Вам нужно изменить класс представления используется. .. попробуйте это:

http://mirmodynamics.com/post/2009/02/23/symfony%3A-use-your-own-View-class

+0

Подумав об этом, кажется, много работы, чтобы сохранить 3-х символов в имени файла .... но каждый на свой собственный! – benlumley

+0

Это было меньше беспокойства, больше о по умолчанию для HTML на любом непревзойденном пути. – Steve

+0

Это был просто default_format в yaml, который вы предположили, что выполнили эту работу. – Steve

Смежные вопросы