If you liked what you've learned so far, dive in!
Subscribe to get access to this tutorial plus
video, code and script downloads.
I've got 2 more bonuses from Twig. In every template, you have access to
a variable called app
. This has a bunch of useful things on it, like
the request, the security context, the User object, and the session:
{# src/Yoda/EventBundle/Resources/views/Event/index.html.twig #}
{# ... #}
{% block body %}
{# some examples - remove these after you try them #}
{{ app.session.get('some_session_key') }}
{{ app.request.host }}
{# ... #}
{% endblock %}
It's actually an object called GlobalVariables, which you can check out
yourself. So when you need one of these things, remember app
!
Tip
Remove this code after trying it out - it's just an example of how you can access the request and session data - it doesn't add anything real to our project.
Next, head to our base template. Right now, the title tag is boring: I can either replace it entirely in a child template or use the default:
<title>{% block title %}Welcome!{% endblock %}</title>
Let's make this better by adding a little suffix whenever the page title is overridden. This shows off the block function, which gives us the current value of a block:
<title>
{% if block('title') %}
{{ block('title') }} | Starwars Events
{% else %}
Events from a Galaxy, far far away
{% endif %}
</title>
Refresh the events page to see it in action.
But if you view the source, you'll see that we've got a lot of whitespace
around the title
tag. That's probably ok, but let's fix it anyways. By
adding a dash to any Twig tag, all the whitespace on that side of the tag
is removed. The end result is a title tag, with no whitespace at all:
<title>
{%- if block('title') -%}
{{ block('title') }} | Starwars Events
{%- else -%}
Events from a Galaxy, far far away
{%- endif -%}
</title>
Wow! Congrats on finishing the first episode! You're well on your way with Symfony, so keep going with Episode 2 and start practicing on a project.
Seeya next time!
"Houston: no signs of life"
Start the conversation!
// composer.json
{
"require": {
"php": ">=5.3.3",
"symfony/symfony": "~2.4", // v2.4.2
"doctrine/orm": "~2.2,>=2.2.3", // v2.4.2
"doctrine/doctrine-bundle": "~1.2", // v1.2.0
"twig/extensions": "~1.0", // v1.0.1
"symfony/assetic-bundle": "~2.3", // v2.3.0
"symfony/swiftmailer-bundle": "~2.3", // v2.3.5
"symfony/monolog-bundle": "~2.4", // v2.5.0
"sensio/distribution-bundle": "~2.3", // v2.3.4
"sensio/framework-extra-bundle": "~3.0", // v3.0.0
"sensio/generator-bundle": "~2.3", // v2.3.4
"incenteev/composer-parameter-handler": "~2.0", // v2.1.0
"doctrine/doctrine-fixtures-bundle": "~2.2.0" // v2.2.0
}
}