查看原始碼 mix phx.gen.html (Phoenix v1.7.14)
為 HTML 資源產生具有檢視、範本、架構及背景的控制器。
mix phx.gen.html Accounts User users name:string age:integer
第一個參數 Accounts
是資源的背景。背景是 Elixir 模組,用於密切相關資源的 API 邊界。
第二個參數 User
是資源的架構。架構是 Elixir 模組,負責將資料庫欄位對應到 Elixir 結構。上述 User
架構指定兩個欄位及個別對應資料型別:name:string
及 age:integer
。如需更多屬性說明,請參閱 mix phx.gen.schema
。
注意:一個資源也可以拆分到不同的背景中 (例如
Accounts.User
和Payments.User
)。
此產生器將加入下列檔案至 lib/
lib/my_app_web/controllers/user_controller.ex
中的控制器lib/my_app_web/controllers/user_html
中的預設 CRUD HTML 範本- 與控制器並置的 HTML 檢視,位於
lib/my_app_web/controllers/user_html.ex
lib/my_app/accounts/user.ex
中擁有users
表格的架構- 用於帳戶 API 的
lib/my_app/accounts.ex
中的背景模組
此外,此產生器產出下列檔案
priv/repo/migrations
中的架構遷移test/my_app/controllers/user_controller_test.exs
中的控制器測試模組test/my_app/accounts_test.exs
中的背景測試模組test/support/fixtures/accounts_fixtures.ex
中的背景測試說明模組
如果背景已存在,此產生器會將給定資源的函式注入到背景、背景測試及背景測試說明模組中。
傘狀應用程式組態
預設情況下,Phoenix 將網頁和特定網域功能注入相同的應用程式。使用傘狀應用程式時,這些考量通常會被拆分為兩個獨立的應用程式,您的背景應用程式 (假設稱為 my_app
) 及其網頁層 (Phoenix 假設為 my_app_web
)。
您可以透過 my_app_umbrella/config/config.exs
中的 :context_app
組態選項,教導 Phoenix 使用此樣式
config :my_app_web,
ecto_repos: [Stuff.Repo],
generators: [context_app: :my_app]
或者,--context-app
選項可以提供給產生器
mix phx.gen.html Sales User users --context-app my_app
如果你刪除了 :context_app
組態選項,Phoenix 會自動將產生的網頁檔案放置於 my_app_umbrella/apps/my_app_web_web
。
如果你將 :context_app
的值改為 :new_value
,my_app_umbrella/apps/new_value_web
必須已經存在,否則你將會收到以下錯誤訊息
** (Mix) 找不到 my_app_web 的依賴項中對應於 context_app :new_value 的目錄。**
Web 名稱空間
預設情況下,控制器和 HTML 檢視會依據架構名稱命名為名稱空間。你可以透過傳遞 --web
旗標,並指定模組名稱來自訂網頁模組的名稱空間,例如
mix phx.gen.html Sales User users --web Sales
這樣會產生 lib/app_web/controllers/sales/user_controller.ex
和 lib/app_web/controllers/sales/user_html.ex
。
自訂內容、架構、表格和遷移
在某些情況下,你可能希望初始化 HTML 範本、控制器和控制器測試,但保留內容或架構的內部實作。你可以使用 --no-context
和 --no-schema
旗標來控制檔案產生。
你也可以變更表格名稱或設定遷移來使用二進位 ID 做為主鍵,詳情請參閱 mix phx.gen.schema
。