Building HTML



When displaying user input in your Views, it is important to convert all characters which have significance 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('<script>alert(\'hi\');</script>');

Using the "e" global helper:

echo e('<script>alert(\'hi\');</script>');

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', array('media' => 'print'));

Further Reading:


Generating a link from a URI:

echo HTML::link('user/profile', 'User Profile');

Generating a link that should use HTTPS:

echo HTML::link_to_secure('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', 'User Profile', array($username));

Further Reading:

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', 'User Profile', array($username));

Links To A Different Language

Generating a link to the same page in another language:

echo HTML::link_to_language('fr');

Generating a link to your home page another language

echo HTML::link_to_language('fr', true);

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('', 'E-Mail Me!');

Creating a mail-to link using the e-mail address as the link text:

echo HTML::mailto('');


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'));


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'));

echo HTML::dl(array('Ubuntu' => 'An operating system by Canonical', 'Windows' => 'An operating system by Microsoft'));

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 '<article type="awesome">';

Now you can call your macro using its name:

Calling a custom HTML macro:

echo HTML::my_element();