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

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

  • phoenix框架目录结构中放置自定义模板的目录
  • 如何修改模块Mix.Tasks.???.Gen.Html 使Mix.Phoenix.copy_from paths(), ... 可以找到自定义模板的存放目录。 (其中 ??? 是我的自定义名称的字符串。这是我重命名的 Mix.Tasks.Phoenix.Gen.Html 模块的副本,可以使用未修改的代码成功运行并成功找到提供的模板)

  • Phoenix Github Issues 上有一个线程与此主题有关,但对要使用的目录路径没有帮助。

    对已实现自己的自定义模板的项目的任何建议或指针将不胜感激。

    最佳答案

    模板的位置当前是 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>
    ...
    

    关于elixir - 如何创建一组自定义模板并将其集成到 Phoenix Framework (Elixir) 中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33404321/

    10-15 06:35