2016-12-19 4 views
0

У меня есть контроллер, производящий некоторые ответы xml, но если я сохраню свои шаблоны с расширением .xml.eex, они не будут отображаться внутри назначенного макета. Как только я сохраню их с обычным расширением .html.eex, у меня нет проблем. Содержимое хорошее, и оно отправляется как действительный xml. Я просто хочу, чтобы мои имена файлов были более наглядными. Что мне не хватает?Как у вас есть шаблон, сохраненный с расширением xml, который будет отображаться внутри макета в phoenix?

ответ

0

Как вы могли видеть, по умолчанию феникс EEx двигатель comes with Phoenix.Template.HTML/Phoenix.HTML.Engine only.

В случае любого другого типа файла (read: extension,) он возвращается к EEx.SmartEngine.

Это говорит, что нет места для вмешательства в обработку .eex (на данный момент.) Хорошей новостью является Phoenix supports custom templates engines. Вы можете поместить

config :phoenix, :template_engines, 
    exx: MyApp.Template.MyEExEngine 

и реализовать двигатель самостоятельно (например, в вашем конкретном случае путем передачи вызовов Phoenix.Template.HTML). Таким образом, вы будете иметь возможность предоставлять файлы с .xml.exx расширений (или что расширение у вас есть двигатель назначен .)

Честно говоря, я не буду этого делать: слишком много усилий для ничего. Возможно, вы можете отправить вопрос на Phoenix, чтобы разрешить подключать определенные двигатели к механизму по умолчанию (например, Phoenix.Template.EExEngine.engine_for/1 может искать конфигурацию или как.)

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

  • Нет связанных вопросов^_^