瀏覽原始碼 Phoenix.Param 協定 (Phoenix v1.7.14)
將資料結構轉換為 URL 參數的協定。
此協定由 URL 輔助程式和 Phoenix 堆疊的其他部分使用。例如,當您撰寫
user_path(conn, :edit, @user)
Phoenix 會透過此協定來從 @user
中萃取出 :id
。
Phoenix 預設會針對整數、二進位資料、原子和結構體實作此協定。對於結構體,預設會假設一個 :id
鍵,但您可以提供特定的實作。
Nil 值無法轉換為參數。
自訂參數
為了客製化任何結構體的參數,只要實作此協定即可。
不過,為方便起見,此協定也可以派生。例如
defmodule User do
@derive Phoenix.Param
defstruct [:id, :username]
end
預設情況下,派生的實作也會使用 :id
鍵。萬一使用者不包含 :id
鍵,可以使用選項來指定鍵
defmodule User do
@derive {Phoenix.Param, key: :username}
defstruct [:username]
end
將自動在網址中使用 :username
。
使用 Ecto 時,您必須在 schema
呼叫前呼叫 @derive
@derive {Phoenix.Param, key: :username}
schema "users" do