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

时间:2015-10-29 01:10:21

标签: elixir phoenix-framework

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

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

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

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

  3. Phoenix Github问题上有一个帖子在某种程度上谈到了这个话题,但没有帮助使用目录路径。

    对于已经实现了自己的自定义模板的项目的任何建议或指示都将非常感激。

1 个答案:

答案 0 :(得分:6)

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