2015-10-29 59 views
2

我不想自定義Phoenix Framework提供的模板,而是創建一套我自己的模板,並將這些模板作爲自定義組合任務。如何創建並將一組自定義模板集成到Phoenix Framework(Elixir)中

我可以創建自定義組合的任務,但想不通:

  1. 凡鳳凰框架目錄結構中把自定義模板

  2. 如何修改模塊混合的目錄。 Tasks.??.Gen.Html,以便Mix.Phoenix.copy_from paths(),...可以找到存儲自定義模板的目錄。 (其中???是我自定義名稱的字符串,它是我已重命名的Mix.Tasks.Phoenix.Gen.Html模塊的副本,並且可以成功運行未修改的代碼,從而成功查找提供的模板)

Phoenix Github上有一個話題對此主題有所瞭解,但對目錄路徑的使用沒有幫助。

任何建議或指向已實施自己的自定義模板項目的指針將不勝感激。

+0

格雷厄姆你可以請擴展你的問題。你試圖完成的是什麼? –

+0

隨標準Phoenix安裝提供的模板不適合我需要的佈局 - 所以我想創建一組可用於替代phoenix.gen.html使用的模板。這將允許我創建一個應用程序,該應用程序的外觀和功能/導航方式非常適合我,而不必進入和編輯提供的模板。 –

回答

6

鳳凰源中的模板位置當前爲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> 
... 
+0

非常感謝。我犯了一個錯誤,試圖更改您突出顯示的「硬編碼」源代碼段中的值,以指向我自己的模板。落下兔子洞!將嘗試你的建議。 –

+0

Patrick,This works。非常感謝。格雷厄姆 –

相關問題