View Source Phoenix.Param protocol (Phoenix v1.7.2)
A protocol that converts data structures into URL parameters.
This protocol is used by URL helpers and other parts of the Phoenix stack. For example, when you write:
user_path(conn, :edit, @user)
Phoenix knows how to extract the :id
from @user
thanks
to this protocol.
By default, Phoenix implements this protocol for integers, binaries, atoms,
and structs. For structs, a key :id
is assumed, but you may provide a
specific implementation.
Nil values cannot be converted to param.
custom-parameters
Custom parameters
In order to customize the parameter for any struct, one can simply implement this protocol.
However, for convenience, this protocol can also be derivable. For example:
defmodule User do
@derive Phoenix.Param
defstruct [:id, :username]
end
By default, the derived implementation will also use
the :id
key. In case the user does not contain an
:id
key, the key can be specified with an option:
defmodule User do
@derive {Phoenix.Param, key: :username}
defstruct [:username]
end
will automatically use :username
in URLs.
When using Ecto, you must call @derive
before
your schema
call:
@derive {Phoenix.Param, key: :username}
schema "users" do
Link to this section Summary
Link to this section Types
@type t() :: term()