Phoenix.HTML.Tag

Helpers related to producing HTML tags within templates.

Source

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

content_tag(name, content)

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\">", "&lt;Hello&gt;", "</p>"]}

iex> content_tag :p, class: "test" do
...>   "Hello"
...> end
{:safe, ["<p class=\"test\">", "Hello", "</p>"]}
Source
content_tag(name, attrs, attrs)
Source
form_tag(action, opts \\ [])

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.

Source
form_tag(action, options, list)

Generates a form tag with the given contents.

Examples

form_tag("/hello", method: "get") do
  "Hello"
end
<form action="/hello" method="post">...Hello...</form>
Source
tag(name)

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.

Source
tag(name, attrs)
Source