Symfony 1 - Helper - UrlHelper

Symfony UrlHelpers add some features to the URL management.

In this Symfony UrlHelpers tutorial, we will see how to use them with some examples.

Let's start with the link_to UrlHelper:

<?php echo link_to(    'My page',
                    array('confirm' => 'go?',
                        'absolute' => true,
                        'query_string' => 'foo=32',
                        'anchor' => 'hello',
                        'post' => true,

This PHP code will produce this HTML one:

<a onclick="if (confirm('go?')) { var f = document.createElement('form'); = 'none'; this.parentNode.appendChild(f); f.method = 'post'; f.action = this.href;var m = document.createElement('input'); m.setAttribute('type', 'hidden'); m.setAttribute('name', '_csrf_token'); m.setAttribute('value', '233b63974612c39e150408705a579803'); f.appendChild(m);f.submit(); };return false;" href="http://myproject/frontend_dev.php/level?foo=32#hello">My page</a>

It will ask you if you accept to continue or not.
You have to use the right syntax such as "module/action", otherwise this will not work correctly.
As you can see, it will create a lot of JavaScript code.
You will have less code if you remove the post option and will can add the popup option and set it to true to open a new window when clicking.

The button_to UrlHelper is exactly the same as the link_to one.
You can use the same options.

There also the link_to_if that creates the link only if the condition is true:

echo link_to_if($user->isAdministrator(), 'Delete this page', 'my_module/my_action');

For the mail_to UrlHelper, it helps to correctly format the famous mailto link:

echo mail_to('', 'send us an email', array('encode' => true));

And for finish, the url_for UrlHelper. It will create a link with the routing rule passed as argument or directly with the "module/action" duo. An absolute path can be passed as well:

echo url_for('my_module/my_action');
=> /path/to/my/action
echo url_for('@my_rule');
=> /path/to/my/action
echo url_for('@my_rule', true);


Add new comment

Plain text

  • No HTML tags allowed.
  • Lines and paragraphs break automatically.
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Refresh Type the characters you see in this picture. Type the characters you see in the picture; if you can't read them, submit the form and a new image will be generated. Not case sensitive.  Switch to audio verification.