如何创建一组自定义模板并将其集成到 Phoenix Framework (Elixir) 中

How do I create and integrate a set of custom templates into the Phoenix Framework (Elixir)

我不想自定义 Phoenix Framework 提供的模板,而是想创建一套自己的模板并将它们作为自定义混合任务调用。

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

  1. phoenix框架目录结构中放置自定义模板目录的位置

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

Phoenix 上有一个主题 Github 问题稍微谈到了这个主题,但对要使用的目录路径没有帮助。

对于已实现自己的自定义模板的项目,我们将不胜感激。

模板的位置当前在 phoenix 源中 hard coded,因此您将无法指定任意位置。然而,它将首先在当前目录中搜索,然后在 phoenix 源代码中搜索。您唯一需要做的就是在您的应用程序中创建 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>
...