Primo progetto (Symfony 3)

  1. Creare un bundle chiamato MWATestBundle (confermando le opzioni predefinite)
php bin/console generate:bundle - -namespace=MWA/TestBundle - -format=yml

(togli lo spazio tra i due -)

  1. questo aggiunge una riga in app\AppKernel.php e crea, nella cartella src, la cartella MWA/TestBundle che contiene:
  2. Controller: contiene i controllori del bundle (p.e. HelloController.php);
  3. Resources\config: contiene la configurazione, compresa la configurazione delle rotte (p.e. routing.yml);
  4. Resources\views: contiene i template, organizzati per nome di controllore (p.e. Hello/index.html.twig);
  1. modificare il file composer.json
    1. sostituire
      "autoload": {
          "psr-4": { "": "src/" },
          ...
      "autoload-dev": {
          "psr-4": { "": "src/" },
    2. eseguire
composer dump-autoload
  1. L’applicazione si crea dentro il bundle
    1. Il file di default delle rotte si trova in \app\config\routing.yml
    2. Il formato yml è stato deciso in fase di creazione, ma può essere anche PHP o XML
    3. Alla creazione del bundle è stato inserito il relativo routing
  1. Creare una rotta
    1. si edita il file \src\MWA\TestBundle\Resources\config\routing.yml e si aggiunge la nuova rotta aggiungendo le seguenti righe:
random: 
    path: /random/{limit} 
    defaults: { _controller: MWATestBundle:Random:index }
  1. dove path è il percorso (URL); {limit} è un parametro che viene passato
  2. defaults indica il controller da eseguire
  3. Creiamo il controllore di nome Random
    1. dentro \src\MWA\TestBundle\Controller creiamo il file RandomController.php
    2. il controllore ha nome logico MWATestBundle:Random:index, mappato sul metofo indexAction della classe PHP: MWA\TestBundle\Controller\RandomController
    3. < ?php  //unire minore con ?php
      namespace MWA\TestBundle\Controller;
      
      use Symfony\Component\HttpFoundation\Response;
      
      class RandomController
      {
        public function indexAction($limit)
        {
          return new Response(
            '< html><body>Numero: '.rand(1, $limit).'</body></html>'  //unire minore con html
          );
        }
      }
      
    4. il controllore ha un’action che restituisce una response che contiene la pagina html da visualizzare
    5. Quindi, dopo aver digitato
      php bin/console server:run

      andando su:

    6. in sviluppo: http://localhost:8000/app_dev.php/random/10
    7. in produzione: http://localhost:8000/app.php/random/10
    8. PS se c’è un errore bisogna cancellare la cache con:
      1. php bin/console cache:clear –env=prod –no-debug

Template

Al posto di Response  si deve usare render, quindi il controller diventa:

 

< ?php //unire minore con ?php

namespace MWA\TestBundle\Controller;

//use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class RandomController extends Controller
{
public function indexAction($limit)
{
//return new Response('< html>< body>Numero: '.rand(1, $limit).'</body></html>');

$number = rand(1, $limit);
return $this->render(
'MWATestBundle:Random:index.html.twig',
array('number' => $number)
);

// rende invece un template PHP
// return $this->render(
// 'AcmeDemoBundle:Random:index.html.php',
// array('number' => $number)
// );
}
}

 

il template può essere scritto in php o twig, si possono usare entrambi nello stesso progetto.

Il controllore rende il template MSWTestBundle:Random:index.html.twig secondo la regola logica NomeBundle:NomeControllore:NomeTemplate che corrisponde alla posizione fisica /percorso_di_NomeBundle/Resources/views/NomeControllore/NomeTemplate

quindi creiamo il seguente il file

\src\MWA\TestBundle\Resources\views\Random\index.html.twig

{% extends '::base.html.twig' %}

{% block body %}
Numero: {{ number }}!
{% endblock %}

come si vede estende ::base.html.twig template che si trova in app/Resources/views/base.html.twig

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.