Skip to content

Commit d0ede99

Browse files
committed
Updated templating/* articles to Symfony 4
1 parent a1901ff commit d0ede99

12 files changed

+133
-183
lines changed

templating.rst

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ configuration:
575575
/**
576576
* @Route("/", name="welcome")
577577
*/
578-
public function indexAction()
578+
public function index()
579579
{
580580
// ...
581581
}
@@ -586,19 +586,19 @@ configuration:
586586
# config/routes.yaml
587587
welcome:
588588
path: /
589-
defaults: { _controller: AppBundle:Welcome:index }
589+
controller: App\Controller\WelcomeController::index
590590
591591
.. code-block:: xml
592592
593-
<!-- config/routes.yaml -->
593+
<!-- config/routes.xml -->
594594
<?xml version="1.0" encoding="UTF-8" ?>
595595
<routes xmlns="http://symfony.com/schema/routing"
596596
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
597597
xsi:schemaLocation="http://symfony.com/schema/routing
598598
http://symfony.com/schema/routing/routing-1.0.xsd">
599599
600600
<route id="welcome" path="/">
601-
<default key="_controller">AppBundle:Welcome:index</default>
601+
<default key="_controller">App\Controller\WelcomeController::index</default>
602602
</route>
603603
</routes>
604604
@@ -610,7 +610,7 @@ configuration:
610610
611611
$collection = new RouteCollection();
612612
$collection->add('welcome', new Route('/', array(
613-
'_controller' => 'AppBundle:Welcome:index',
613+
'_controller' => 'App\Controller\WelcomeController::index',
614614
)));
615615
616616
return $collection;
@@ -644,7 +644,7 @@ route:
644644
/**
645645
* @Route("/article/{slug}", name="article_show")
646646
*/
647-
public function showAction($slug)
647+
public function show($slug)
648648
{
649649
// ...
650650
}
@@ -654,8 +654,8 @@ route:
654654
655655
# config/routes.yaml
656656
article_show:
657-
path: /article/{slug}
658-
defaults: { _controller: AppBundle:Article:show }
657+
path: /article/{slug}
658+
controller: App\Controller\ArticleController::show
659659
660660
.. code-block:: xml
661661
@@ -667,7 +667,7 @@ route:
667667
http://symfony.com/schema/routing/routing-1.0.xsd">
668668
669669
<route id="article_show" path="/article/{slug}">
670-
<default key="_controller">AppBundle:Article:show</default>
670+
<default key="_controller">App\Controller\ArticleController::show</default>
671671
</route>
672672
</routes>
673673
@@ -679,7 +679,7 @@ route:
679679
680680
$collection = new RouteCollection();
681681
$collection->add('article_show', new Route('/article/{slug}', array(
682-
'_controller' => 'AppBundle:Article:show',
682+
'_controller' => 'App\Controller\ArticleController::show',
683683
)));
684684
685685
return $collection;
@@ -791,10 +791,10 @@ advantage of Symfony's template inheritance.
791791
.. tip::
792792

793793
This section will teach you the philosophy behind including stylesheet
794-
and JavaScript assets in Symfony. Symfony is also compatible with another
795-
library, called Assetic, which follows this philosophy but allows you to do
796-
much more interesting things with those assets. For more information on
797-
using Assetic see :doc:`/frontend/assetic/asset_management`.
794+
and JavaScript assets in Symfony. If you are interested in compiling and
795+
creating those assets, check out the :doc:`Webpack Encore documentation </frontend>`
796+
a tool that seamlessly integrates Webpack and other modern JavaScript tools
797+
into Symfony applications.
798798

799799
Start by adding two blocks to your base template that will hold your assets:
800800
one called ``stylesheets`` inside the ``head`` tag and another called ``javascripts``
@@ -878,7 +878,7 @@ to add to the parent block's content (and not actually *replace* it), you
878878
should use the ``parent()`` Twig function to include everything from the ``stylesheets``
879879
block of the base template.
880880

881-
You can also include assets located in your bundles' ``Resources/public`` folder.
881+
You can also include assets located in your bundles' ``Resources/public/`` folder.
882882
You will need to run the ``php bin/console assets:install target [--symlink]``
883883
command, which copies (or symlinks) files into the correct location. (target
884884
is by default the "web/" directory of your application).

templating/PHP.rst

Lines changed: 33 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ your application configuration file:
2424

2525
.. code-block:: yaml
2626
27-
# app/config/config.yml
27+
# config/packages/framework.yaml
2828
framework:
2929
# ...
3030
templating:
3131
engines: ['twig', 'php']
3232
3333
.. code-block:: xml
3434
35-
<!-- app/config/config.xml -->
35+
<!-- config/packages/framework.xml -->
3636
<?xml version="1.0" encoding="UTF-8" ?>
3737
<container xmlns="http://symfony.com/schema/dic/services"
3838
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -53,6 +53,7 @@ your application configuration file:
5353
5454
.. code-block:: php
5555
56+
// config/packages/framework.php
5657
$container->loadFromExtension('framework', array(
5758
// ...
5859
'templating' => array(
@@ -67,28 +68,11 @@ below renders the ``index.html.php`` template::
6768
// src/Controller/HelloController.php
6869

6970
// ...
70-
public function indexAction($name)
71+
public function index($name)
7172
{
72-
return $this->render(
73-
'AppBundle:Hello:index.html.php',
74-
array('name' => $name)
75-
);
76-
}
77-
78-
You can also use the `@Template`_ shortcut to render the default
79-
``AppBundle:Hello:index.html.php`` template::
80-
81-
// src/Controller/HelloController.php
82-
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
83-
84-
// ...
85-
86-
/**
87-
* @Template(engine="php")
88-
*/
89-
public function indexAction($name)
90-
{
91-
return array('name' => $name);
73+
return $this->render('hello/index.html.php', array(
74+
'name' => $name
75+
));
9276
}
9377

9478
.. caution::
@@ -98,24 +82,24 @@ You can also use the `@Template`_ shortcut to render the default
9882
the ``@`` notation for Twig namespaces will no longer be supported for the
9983
``render()`` method::
10084

101-
public function indexAction()
85+
public function index()
10286
{
10387
// ...
10488

10589
// namespaced templates will no longer work in controllers
106-
$this->render('@App/Default/index.html.twig');
90+
$this->render('@SomeNamespace/hello/index.html.twig');
10791

10892
// you must use the traditional template notation
109-
$this->render('AppBundle:Default:index.html.twig');
93+
$this->render('hello/index.html.twig');
11094
}
11195

11296
.. code-block:: twig
11397
11498
{# inside a Twig template, namespaced templates work as expected #}
115-
{{ include('@App/Default/index.html.twig') }}
99+
{{ include('@SomeNamespace/hello/index.html.twig') }}
116100
117101
{# traditional template notation will also work #}
118-
{{ include('AppBundle:Default:index.html.twig') }}
102+
{{ include('hello/index.html.twig') }}
119103
120104
121105
.. index::
@@ -135,31 +119,24 @@ the ``extend()`` call:
135119
.. code-block:: html+php
136120

137121
<!-- templates/Hello/index.html.php -->
138-
<?php $view->extend('AppBundle::layout.html.php') ?>
122+
<?php $view->extend('layout.html.php') ?>
139123

140124
Hello <?php echo $name ?>!
141125

142-
The ``AppBundle::layout.html.php`` notation sounds familiar, doesn't it? It
143-
is the same notation used to reference a template. The ``::`` part simply
144-
means that the controller element is empty, so the corresponding file is
145-
directly stored under ``views/``.
146-
147126
Now, have a look at the ``layout.html.php`` file:
148127

149128
.. code-block:: html+php
150129

151130
<!-- templates/layout.html.php -->
152-
<?php $view->extend('::base.html.php') ?>
131+
<?php $view->extend('base.html.php') ?>
153132

154133
<h1>Hello Application</h1>
155134

156135
<?php $view['slots']->output('_content') ?>
157136

158-
The layout is itself decorated by another one (``::base.html.php``). Symfony
137+
The layout is itself decorated by another one (``base.html.php``). Symfony
159138
supports multiple decoration levels: a layout can itself be decorated by
160-
another one. When the bundle part of the template name is empty, views are
161-
looked for in the ``templates/`` directory. This directory stores
162-
global views for your entire project:
139+
another one:
163140

164141
.. code-block:: html+php
165142

@@ -196,8 +173,8 @@ decorating the template. In the ``index.html.php`` template, define a
196173

197174
.. code-block:: html+php
198175

199-
<!-- templates/Hello/index.html.php -->
200-
<?php $view->extend('AppBundle::layout.html.php') ?>
176+
<!-- templates/hello/index.html.php -->
177+
<?php $view->extend('layout.html.php') ?>
201178

202179
<?php $view['slots']->set('title', 'Hello World Application') ?>
203180

@@ -238,17 +215,17 @@ Create a ``hello.html.php`` template:
238215

239216
.. code-block:: html+php
240217

241-
<!-- templates/Hello/hello.html.php -->
218+
<!-- templates/hello/hello.html.php -->
242219
Hello <?php echo $name ?>!
243220

244221
And change the ``index.html.php`` template to include it:
245222

246223
.. code-block:: html+php
247224

248-
<!-- templates/Hello/index.html.php -->
249-
<?php $view->extend('AppBundle::layout.html.php') ?>
225+
<!-- templates/hello/index.html.php -->
226+
<?php $view->extend('layout.html.php') ?>
250227

251-
<?php echo $view->render('AppBundle:Hello:hello.html.php', array('name' => $name)) ?>
228+
<?php echo $view->render('hello/hello.html.php', array('name' => $name)) ?>
252229

253230
The ``render()`` method evaluates and returns the content of another template
254231
(this is the exact same method as the one used in the controller).
@@ -270,33 +247,15 @@ If you create a ``fancy`` action, and want to include it into the
270247

271248
<!-- templates/Hello/index.html.php -->
272249
<?php echo $view['actions']->render(
273-
new \Symfony\Component\HttpKernel\Controller\ControllerReference('AppBundle:Hello:fancy', array(
274-
'name' => $name,
275-
'color' => 'green',
276-
))
250+
new \Symfony\Component\HttpKernel\Controller\ControllerReference(
251+
'App\Controller\HelloController::fancy',
252+
array(
253+
'name' => $name,
254+
'color' => 'green',
255+
)
256+
)
277257
) ?>
278258

279-
Here, the ``AppBundle:Hello:fancy`` string refers to the ``fancy`` action of the
280-
``Hello`` controller::
281-
282-
// src/Controller/HelloController.php
283-
284-
class HelloController extends Controller
285-
{
286-
public function fancyAction($name, $color)
287-
{
288-
// create some object, based on the $color variable
289-
$object = ...;
290-
291-
return $this->render('AppBundle:Hello:fancy.html.php', array(
292-
'name' => $name,
293-
'object' => $object
294-
));
295-
}
296-
297-
// ...
298-
}
299-
300259
But where is the ``$view['actions']`` array element defined? Like
301260
``$view['slots']``, it's called a template helper, and the next section tells
302261
you more about those.
@@ -332,10 +291,10 @@ pattern:
332291

333292
.. code-block:: yaml
334293
335-
# src/Resources/config/routing.yml
336-
hello: # The route name
337-
path: /hello/{name}
338-
defaults: { _controller: AppBundle:Hello:index }
294+
# config/routes.yaml
295+
hello:
296+
path: /hello/{name}
297+
controller: App\Controller\HelloController::index
339298
340299
Using Assets: Images, JavaScripts and Stylesheets
341300
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

templating/debug.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
How to Dump Debug Information in Twig Templates
88
===============================================
99

10-
When using PHP, you can use the
10+
When using PHP templates, you can use the
1111
:ref:`dump() function from the VarDumper component <components-var-dumper-dump>`
1212
if you need to quickly find the value of a variable passed. This is useful,
1313
for example, inside your controller::
@@ -19,7 +19,7 @@ for example, inside your controller::
1919

2020
class ArticleController extends Controller
2121
{
22-
public function recentListAction()
22+
public function recentList()
2323
{
2424
$articles = ...;
2525
dump($articles);

templating/embedding_controllers.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ articles::
2626

2727
class ArticleController extends Controller
2828
{
29-
public function recentArticlesAction($max = 3)
29+
public function recentArticles($max = 3)
3030
{
3131
// make a database call or other logic
3232
// to get the "$max" most recent articles
@@ -68,7 +68,7 @@ The ``recent_list`` template is perfectly straightforward:
6868
you'll learn how to do this correctly.
6969

7070
To include the controller, you'll need to refer to it using the standard
71-
string syntax for controllers (i.e. **controllerPath**::**action**):
71+
string syntax for controllers (i.e. **controllerNamespace**::**action**):
7272

7373
.. configuration-block::
7474

@@ -98,4 +98,4 @@ string syntax for controllers (i.e. **controllerPath**::**action**):
9898
) ?>
9999
</div>
100100

101-
The result of an embedded controler can also be :doc:`cached </http_cache/esi>`
101+
The result of an embedded controller can also be :doc:`cached </http_cache/esi>`

templating/formats.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ pattern is to do the following::
3030
/**
3131
* @Route("/{slug}")
3232
*/
33-
public function showAction(Request $request, $slug)
33+
public function show(Request $request, $slug)
3434
{
3535
// retrieve the article based on $slug
3636
$article = ...;
@@ -53,7 +53,7 @@ special ``_format`` placeholder in your route definition::
5353
/**
5454
* @Route("/{slug}.{_format}", defaults={"_format": "html"})
5555
*/
56-
public function showAction(Request $request, $slug)
56+
public function show(Request $request, $slug)
5757
{
5858
// ...
5959
}

0 commit comments

Comments
 (0)