How to passing data from a page to a .twig Template

1. Create in src\AppBundle\Controller\LuckyController.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// src/AppBundle/Controller/LuckyController.php
namespace AppBundle\Controller;
 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\Controller; // to extend Controller
 
class LuckyController extends Controller // extends Controllers of Symfony
{
    /**
     * @Route("/lucky/number")
     */
    public function numberAction() // my function
    {
        $number = mt_rand(0, 100); // random PHP function
         
        // send the variable to a .twig template
        return $this->render('lucky/number.html.twig', array(
            'number' => $number,
        ));
    }
}

2. Create in app\Resources\views\lucky\number.html.twig

1
2
3
{# app/Resources/views/lucky/number.html.twig #}
 
<h1>Your lucky number is {{ number }}</h1>

NOTICE:

a. The namespace to exted standard Controller of Symfony:
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

b. The class have to extend the Controller namespace:
class LuckyController extends Controller

c. render using lucky/number.html.twig the array key ‘number’ with value $number
return $this->render(‘lucky/number.html.twig’, array(
‘number’ => $number,

d. the template receive the value of number

1
2
3
4
5
<h1>Your lucky number is {{ number }}</h1>
 
{{ number }} -> this is the syntax of .twig to get the value sent by public function numberAction()
 
{# app/Resources/views/lucky/number.html.twig #} -> this is a comment only in .twig syntax