# Building HTML
## Content
- [Entities](#entities)
- [Scripts And Style Sheets](#scripts-and-style-sheets)
- [Links](#links)
- [Links To Named Routes](#links-to-named-routes)
- [Links To Controller Actions](#links-to-controller-actions)
- [Mail-To Links](#mail-to-links)
- [Images](#images)
- [Lists](#lists)
- [Custom Macros](#custom-macros)
## Entities
When displaying user input in your Views, it is important to convert all characters which have signifance in HTML to their "entity" representation.
For example, the < symbol should be converted to its entity representation. Converting HTML characters to their entity representation helps protect your application from cross-site scripting:
#### Converting a string to its entity representation:
echo HTML::entities('');
#### Using the "e" global helper:
echo e('');
## Scripts And Style Sheets
#### Generating a reference to a JavaScript file:
echo HTML::script('js/scrollTo.js');
#### Generating a reference to a CSS file:
echo HTML::style('css/common.css');
#### Generating a reference to a CSS file using a given media type:
echo HTML::style('css/common.css', 'print');
*Further Reading:*
- *[Managing Assets](/docs/views/assets)*
## Links
#### Generating a link from a URI:
echo HTML::link('user/profile', 'User Profile');
#### Generating a link that should use HTTPS:
echo HTML::secure_link('user/profile', 'User Profile');
#### Generating a link and specifying extra HTML attributes:
echo HTML::link('user/profile', 'User Profile', array('id' => 'profile_link'));
## Links To Named Routes
#### Generating a link to a named route:
echo HTML::link_to_route('profile');
#### Generating a link to a named route with wildcard values:
$url = HTML::link_to_route('profile', array($username));
*Further Reading:*
- *[Named Routes](/docs/routing#named-routes)*
## Links To Controller Actions
#### Generating a link to a controller action:
echo HTML::link_to_action('home@index');
### Generating a link to a controller action with wildcard values:
echo HTML::link_to_action('user@profile', array($username));
## Mail-To Links
The "mailto" method on the HTML class obfuscates the given e-mail address so it is not sniffed by bots.
#### Creating a mail-to link:
echo HTML::mailto('example@gmail.com', 'E-Mail Me!');
#### Creating a mail-to link using the e-mail address as the link text:
echo HTML::mailto('example@gmail.com');
## Images
#### Generating an HTML image tag:
echo HTML::image('img/smile.jpg', $alt_text);
#### Generating an HTML image tag with extra HTML attributes:
echo HTML::image('img/smile.jpg', $alt_text, array('id' => 'smile'));
## Lists
#### Creating lists from an array of items:
echo HTML::ol(array('Get Peanut Butter', 'Get Chocolate', 'Feast'));
echo HTML::ul(array('Ubuntu', 'Snow Leopard', 'Windows'));
## Custom Macros
It's easy to define your own custom HTML class helpers called "macros". Here's how it works. First, simply register the macro with a given name and a Closure:
#### Registering a HTML macro:
HTML::macro('my_element', function()
{
return '';
});
Now you can call your macro using its name:
#### Calling a custom HTML macro:
echo HTML::my_element();