如何在Phoenix Framework(Elixir)中创建和集成一组自定义模板

Gra*_*Hay 2 elixir phoenix-framework

我不想自定义Phoenix Framework提供的模板,而是想创建一个自己的模板,并将那些可调用作为自定义混合任务.

我可以创建自定义混合任务,但无法弄清楚:

  1. 其中凤盾框架目录结构中放置自定义模板的目录

  2. 如何修改模块Mix.Tasks.???.Gen.Html,以便Mix.Phoenix.copy_from paths(),...可以找到存储自定义模板的目录.(其中???是我的自定义名称的字符串.这是我已重命名的Mix.Tasks.Phoenix.Gen.Html模块的副本,可以使用未修改的代码成功运行,成功查找提供的模板)

凤凰城Github问题上有一个线程在某种程度上谈到了这个主题,但没有帮助使用目录路径.

任何建议或指向已实现自己的自定义模板的项目将非常感激.

Pat*_*ity 6

模板的位置当前在凤凰源中进行了硬编码,因此您将无法指定任意位置.然而,它将首先在当前目录中搜索,然后在凤凰源代码中搜索.您唯一要做的就是priv/templates/phoenix.gen.html/在应用程序中创建目录.然后,您可以覆盖那里的模板.

# create dummy app
$ mix phoenix.new my_app
$ cd my_app
$ mix deps.get
$ mix deps.compile

# override the show template
$ mkdir -p priv/templates/phoenix.gen.html/
$ echo 'TEST <%= 123 %>' > priv/templates/phoenix.gen.html/show.html.eex

# run the generator
$ mix phoenix.gen.html User users name:string

# the show template is now overridden
$ cat web/templates/user/show.html.eex
TEST 123

# other templates are left untouched
$ cat web/templates/user/index.html.eex
<h2>Listing users</h2>
...
Run Code Online (Sandbox Code Playgroud)