I’m very new to Phoenix and am reading a project written by someone else. I’m trying to understand how to render input controls. I see this:
<.input
type="select"
label="Format"
options={["Table", "Raw", "Discord"]}
name="message-format"
value={@filters["message-format"]}
phx-change="format-update"
/>
How does this differ from using <input
instead? Are they interchangeable?
Unless they’ve moved it, you should be able to find the definition of input
in lib/app_web/components/core_components.ex
.
The code in question is actually rendering a select box as per type="select"
. input
is designed to cover all types of form inputs but since it’s generated code, you can change this if you want. For selects it takes care of creating the <option>
tags via the options={...}
attribute there. It’s hard to say without seeing the code but I assume @filters
is not a %Form{}
object, so that is why they are explicitly passing name
and value
. Most of the time, though, you can simply do field={@form[:message_format]}
without passing name
and value
.
1 Like