檢視原始碼 mix phx.gen.live (Phoenix v1.7.14)

針對資源產生 LiveView、範本和內容。

mix phx.gen.live Accounts User users name:string age:integer

第一個參數是內容模組。內容是一個 Elixir 模組,用作給定資源的 API 邊界。一個內容通常包含許多相關資源。因此,如果內容已存在,它將會延伸給定資源的功能。

第二個參數是模式模組。該模式負責將資料庫欄位對應到一個 Elixir 構造。

其餘參數是模式模組的複數名稱(用作模式資料表名稱),以及一組選用的屬性(分別包含它們的名稱和類型)。請參閱 mix help phx.gen.schema 以取得更多關於屬性的資訊。

當第一次執行此指令時,將會建立一個 Components 模組(如果它不存在的話),以及資源層級的 LiveViews 與組件,包括新資源的 UserLive.IndexUserLive.ShowUserLive.FormComponent 模組。

注意:一個資源也可以分佈在不同的內容中(例如:Accounts.UserPayments.User)。

整體來說,這個產生器會加入下列檔案

  • accounts API 中的 lib/app/accounts.ex 內容模組
  • lib/app/accounts/user.ex 中的模式,搭配一個 users 資料表
  • lib/app_web/live/user_live/show.ex 中的 LiveView
  • lib/app_web/live/user_live/index.ex 中的 LiveView
  • lib/app_web/live/user_live/form_component.ex 中的 LiveComponent
  • lib/app_web/live/live_helpers.ex 中的輔助程式模組,搭配一個 modal

在檔案產生完成後,將會輸出關於 lib/app_web/router.ex 檔案所需更新的訊息。

Add the live routes to your browser scope in lib/app_web/router.ex:

  live "/users", UserLive.Index, :index
  live "/users/new", UserLive.Index, :new
  live "/users/:id/edit", UserLive.Index, :edit

  live "/users/:id", UserLive.Show, :show
  live "/users/:id/show/edit", UserLive.Show, :edit

內容 app

也會產生一個給貯存庫的 migration 檔案,以及給內容和控制器功能的測試檔案。

在 umbrella 應用程式中,網路檔案(LiveView、檢視、範本等)的位置會根據位於應用程式 :generators 設定中的 :context_app 設定而有所不同。設定後,Phoenix 產生器會直接在您的 lib 及測試資料夾中產生網路檔案,因為應用程式假設被隔離到特定於網路的功能。如果未設定 :context_app,產生器會將網路相關的 lib 和測試檔案放置在 web/ 目錄中,因為假設應用程式同時處理網路和特定於網域的功能。範例設定

config :my_app_web, :generators, context_app: :my_app

或者,可以將 --context-app 選項提供給產生器

mix phx.gen.live Accounts User users --context-app warehouse

網路名稱空間

預設情況下,LiveView 模組將由網路模組命名空間化。您可以透過傳遞具有模組名稱的 --web 標誌,自訂網路模組名稱空間,例如

mix phx.gen.live Accounts User users --web Sales

這會在 lib/app_web/live/sales/user_live/ 中產生 LiveView,將名稱空間命名為 AppWeb.Sales.UserLive,而非 AppWeb.UserLive

自訂內容、架構、表格和遷移

在某些情況下,您可能希望引導 HTML 範本、LiveView 和測試,但保留內容或架構的內部實作。您可以使用 --no-context--no-schema 標誌來控制檔案產生。

mix phx.gen.live Accounts User users --no-context --no-schema

在以上情況,測試仍然會產生,但它們都會失敗。

您也可以變更表格名稱或設定遷移以將二進位 ID 用於主鍵,請參閱 mix help phx.gen.schema 以取得更多資訊。