Phoenix.HTML.Tag
Helpers related to producing HTML tags within templates.
Summary↑
content_tag(name, content) | Creates an HTML tag with given name, content, and attributes |
content_tag(name, attrs, attrs) | |
form_tag(action, opts \\ []) | Generates a form tag |
form_tag(action, options, list) | Generates a form tag with the given contents |
tag(name) | Creates an HTML tag with the given name and options |
tag(name, attrs) |
Functions
Creates an HTML tag with given name, content, and attributes.
iex> content_tag(:p, "Hello")
{:safe, ["<p>", "Hello", "</p>"]}
iex> content_tag(:p, "<Hello>", class: "test")
{:safe, ["<p class=\"test\">", "<Hello>", "</p>"]}
iex> content_tag :p, class: "test" do
...> "Hello"
...> end
{:safe, ["<p class=\"test\">", "Hello", "</p>"]}
Generates a form tag.
This function generates the <form>
tag without its
closing part. Check form_tag/3
for generating an
enclosing tag.
Examples
form_tag("/hello")
<form action="/hello" method="post">
form_tag("/hello", method: :get)
<form action="/hello" method="get">
Options
:method
- the HTTP method. If the method is not “get” nor “post”, an input tag with name_method
is generated along-side the form tag. Defaults to “post”.:multipart
- when true, sets enctype to “multipart/form-data”. Required when uploading files:csrf_token
- for “post” requests, the form tag will automatically include an input tag with name_csrf_token
. When set to false, this is disabled:enforce_utf8
- when false, does not enforce utf8. Read below for more information
All other options are passed to the underlying HTML tag.
Enforce UTF-8
Alhought forms provide the accept-charset
attribute, which we set
to UTF-8, Internet Explorer 5 up to 8 may ignore the value of this
attribute if the user chooses their browser to do so. This ends up
triggering the browser to send data in a format that is not
understandable by the server.
For this reason, Phoenix automatically includes a “_utf8=✓” parameter in your forms, to force those browsers to send the data in the proper encoding. This technique has been seen in the Rails web framework and reproduced here.
Generates a form tag with the given contents.
Examples
form_tag("/hello", method: "get") do
"Hello"
end
<form action="/hello" method="post">...Hello...</form>
Creates an HTML tag with the given name and options.
iex> tag(:br)
{:safe, "<br>"}
iex> tag(:input, type: "text", name: "user_id")
{:safe, "<input name=\"user_id\" type=\"text\">"}
Boolean values
In case an attribute contains a boolean value, its key is repeated when it is true, as expected in HTML, or the attribute is completely removed if it is false:
iex> tag(:audio, autoplay: true)
{:safe, "<audio autoplay=\"autoplay\">"}
iex> tag(:audio, autoplay: false)
{:safe, "<audio>"}
If you want the boolean attribute to be sent as is, you can explicitly convert it to a string before.