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