symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di...

18
symfony #symfony

Transcript of symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di...

Page 1: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

symfony

#symfony

Page 2: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

Sommario

Di 1

Capitolo 1: Iniziare con symfony 2

Osservazioni 2

Open-Source 2

Documentazione ufficiale 2

Versioni 2

Symfony 3 2

Symfony 2 2

Examples 3

Creare un nuovo progetto Symfony usando il programma di installazione di Symfony 3

Download e installazione di Symfony Installer su Linux / MacOS 3

Creare un nuovo progetto con l'ultima versione di Symfony 3

Creare un nuovo progetto usando una versione specifica di Symfony 4

Creare un nuovo progetto Symfony usando Composer 4

Installazione di una versione specifica di Symfony 4

Esecuzione dell'applicazione Symfony utilizzando il web server integrato di PHP 5

Capitolo 2: Contenitore di servizio 6

introduzione 6

Examples 6

Recupera un servizio dal contenitore 6

Capitolo 3: Controller 7

introduzione 7

Sintassi 7

Osservazioni 7

Examples 7

Una semplice classe di controller 7

Rendering di un modello Twig 8

Restituzione di una pagina 404 (non trovata) 8

Utilizzo dei dati dall'oggetto Richiesta 9

Capitolo 4: La richiesta 10

Page 3: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

introduzione 10

Sintassi 10

Examples 10

Ottenere un parametro stringa di query 10

Creazione di un oggetto Request da variabili globali 11

Accesso a una variabile POST 11

Accedere ai contenuti di un cookie 11

Capitolo 5: Routing 12

introduzione 12

Parametri 12

Examples 12

Percorsi semplici 12

Percorsi con segnaposti 13

Valori predefiniti per segnaposti 13

Titoli di coda 15

Page 4: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

Di

You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: symfony

It is an unofficial and free symfony ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official symfony.

The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.

Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to [email protected]

https://riptutorial.com/it/home 1

Page 5: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

Capitolo 1: Iniziare con symfony

Osservazioni

Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte di Symfony Framework.

Come la maggior parte dei framework, Symfony risolve problemi tecnici ricorrenti per te (come l'autenticazione, il routing, ecc.) Così puoi concentrare il tuo tempo sui problemi di business che stai cercando di risolvere.

Al contrario di altri framework, tuttavia, i componenti di Symfony sono disaccoppiati tra loro, consentendo di selezionare quelli necessari. Invece di dover adattare la tua applicazione al tuo framework, puoi adattare la struttura alle tue esigenze.

Questo è ciò che rende Symfony molto popolare e consente ad altri progetti e framework (inclusi Laravel, Drupal, Magento e Composer) di utilizzare i componenti senza dover utilizzare la struttura completa.

Open-Source

Symfony è un progetto open-source. Guarda come puoi contribuire .

Documentazione ufficiale

La documentazione ufficiale di Symfony è disponibile sul sito Web di Symfony.

Versioni

Symfony 3

Versione Fine della vita Data di rilascio

3.3 07/2018 2017/05/29

3.2 01/2018 2016/11/30

3.1 07/2017 2016/05/30

3.0 01/2017 2015/11/30

Symfony 2

https://riptutorial.com/it/home 2

Page 6: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

Versione Fine della vita Data di rilascio

2.8 11/2019 2015/11/30

2.7 05/2019 2015/05/30

2.6 01/2016 2014/11/28

2.5 07/2015 2014/05/31

2.4 01/2015 2013/12/03

2.3 05/2017 2013/06/03

2.2 05/2014 2013/03/01

2.1 11/2013 2012/09/06

2.0 09/2013 2011-07-28

Examples

Creare un nuovo progetto Symfony usando il programma di installazione di Symfony

Symfony Installer è uno strumento da riga di comando che ti aiuta a creare nuove applicazioni Symfony. Richiede PHP 5.4 o versioni successive.

Download e installazione di Symfony Installer su Linux / MacOS

Apri un terminale ed esegui i seguenti comandi:

sudo mkdir -p /usr/local/bin sudo curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony sudo chmod a+x /usr/local/bin/symfony

Questo crea un eseguibile globale di symfony che può essere chiamato da qualsiasi luogo. Devi farlo solo una volta: ora puoi creare tutti i progetti Symfony con quello che vuoi.

Creare un nuovo progetto con l'ultima versione di Symfony

Una volta installato il programma di installazione, è possibile utilizzarlo per creare un nuovo progetto Symfony. Esegui il seguente comando:

symfony new my_project_name

https://riptutorial.com/it/home 3

Page 7: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

Questo comando creerà una nuova directory (chiamata my_project_name ) contenente la versione più recente di Symfony Standard Edition . Installa inoltre tutte le sue dipendenze (inclusi i componenti effettivi di Symfony) usando Composer.

Creare un nuovo progetto usando una versione specifica di Symfony

Se si desidera selezionare una versione specifica di Symfony anziché l'ultima, è possibile utilizzare il secondo argomento opzionale del new comando.

Per selezionare una versione secondaria:

symfony new my_project_name 3.2

Per selezionare una versione patch:

symfony new my_project_name 3.2.9

Per selezionare una versione beta o rilasciare un candidato:

symfony new my_project 2.7.0-BETA1 symfony new my_project 2.7.0-RC1

Per selezionare la versione più recente del supporto a lungo termine (LTS):

symfony new my_project_name lts

Creare un nuovo progetto Symfony usando Composer

Se per qualche motivo l'uso di Symfony Installer non è un'opzione, puoi anche creare un nuovo progetto usando Composer. Prima di tutto, assicurati di aver installato Composer .

Successivamente, è possibile utilizzare il comando create-project per creare un nuovo progetto:

composer create-project symfony/framework-standard-edition my_project_name

Simile a Symfony Installer, installerà l'ultima versione di Symfony Standard Edition in una directory chiamata my_project_name e installerà quindi le sue dipendenze (inclusi i componenti di Symfony).

Installazione di una versione specifica di Symfony

Come con Symfony Installer, puoi selezionare una versione specifica di Symfony fornendo un terzo argomento opzionale:

composer create-project symfony/framework-standard-edition my_project_name "2.8.*"

https://riptutorial.com/it/home 4

Page 8: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

Si noti tuttavia che non tutti gli alias di versione (come lts per esempio) sono disponibili qui.

Esecuzione dell'applicazione Symfony utilizzando il web server integrato di PHP

Dopo aver creato una nuova applicazione Symfony , puoi usare il comando server:run per avviare un semplice server web PHP, così puoi accedere alla tua nuova applicazione dal tuo browser web:

cd my_project_name/ php bin/console server:run

È ora possibile visitare http: // localhost: 8000 / per vedere la pagina di benvenuto di Symfony.

Importante: durante l'utilizzo del web server integrato è ideale per lo sviluppo, non si dovrebbe usare in produzione. Utilizzare invece un server Web completo come Apache o Nginx.

Leggi Iniziare con symfony online: https://riptutorial.com/it/symfony/topic/9448/iniziare-con-symfony

https://riptutorial.com/it/home 5

Page 9: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

Capitolo 2: Contenitore di servizio

introduzione

Un'applicazione Symfony è tipicamente composta da molti oggetti che eseguono compiti diversi, come repository, controller, mailer, ecc. In Symfony, questi oggetti sono chiamati servizi , e sono definiti in app/config/services.yml o in uno di i pacchetti installati.

Il Service Container sa come istanziare questi servizi e mantiene un riferimento a loro in modo che non debbano essere istanziati due volte. Se un servizio ha dipendenze, creerà un'istanza anche per quelle.

Examples

Recupera un servizio dal contenitore

$logger = $container->get('logger');

Questo preleverà il servizio con l'ID di servizio "logger" dal contenitore, un oggetto che implementa Psr\Log\LoggerInterface .

Leggi Contenitore di servizio online: https://riptutorial.com/it/symfony/topic/10183/contenitore-di-servizio

https://riptutorial.com/it/home 6

Page 10: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

Capitolo 3: Controller

introduzione

Un controller in Symfony è un PHP callable (una funzione, un metodo su un oggetto o una chiusura) che riceve una richiesta HTTP e restituisce una risposta HTTP. Una risposta HTTP può contenere qualsiasi cosa: una pagina HTML, una stringa JSON, un download di file, ecc.

Per comunicare a Symfony quale controller deve gestire una determinata richiesta, è necessario configurare una rotta .

Sintassi

$ this-> generateUrl ('route_name', ['placeholder' => 'value']); // genera un URL per la route route_name con un segnaposto

$ This-> render ( 'template.html.twig'); // esegue il rendering di un modello Twig e restituisce un oggetto Response

$ this-> render ('template.html.twig', ['parameter' => $ value]); // esegue il rendering di un modello Twig con un parametro

buttare $ this-> createNotFoundException ('Message'); // lancia una NotFoundHttpException che farà sì che Symfony restituisca una risposta 404

Osservazioni

I controllori dovrebbero essere piccoli e concentrarsi sulla gestione delle richieste HTTP: la logica di business effettiva della tua applicazione dovrebbe essere delegata a diverse parti della tua applicazione, ad esempio il tuo modello di dominio.

Examples

Una semplice classe di controller

// src/AppBundle/Controller/HelloWorldController.php namespace AppBundle\Controller; use Symfony\Component\HttpFoundation\Response; class HelloWorldController { public function helloWorldAction() { return new Response( '<html><body>Hello World!</body></html>' ); } }

https://riptutorial.com/it/home 7

Page 11: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

Rendering di un modello Twig

Nella maggior parte dei casi, si desidera eseguire il rendering di risposte HTML da un modello invece di codificare l'HTML nel controller. Inoltre, i tuoi modelli non saranno statici ma conterranno segnaposto per i dati dell'applicazione. Per impostazione predefinita, Symfony viene fornito con Twig, un potente linguaggio di template.

Per utilizzare Twig nel controller, estendere la classe Controller base di Symfony:

// src/AppBundle/Controller/HelloWorldController.php namespace AppBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Response; class HelloWorldController extends Controller { public function helloWorldAction() { $text = 'Hello World!'; return $this->render('hello-world.html.twig', ['text' => $text]); } }

Crea il template Twig (che si trova in app/Resources/views/hello-world.html.twig ):

<html><body>{{ text }}</body></html>

Twig sostituirà automaticamente il segnaposto {{ text }} con il valore del parametro text , passato dal controller. Questo renderà il seguente output HTML:

<html><body>Hello World!</body></html>

Restituzione di una pagina 404 (non trovata)

A volte si desidera restituire una risposta 404 (non trovata), poiché la risorsa richiesta non esiste. Symfony ti consente di lanciare NotFoundHttpException .

Il controller di base di Symfony espone un metodo createNotFoundException che crea l'eccezione per te:

public function indexAction() { // retrieve the object from database $product = ...; if (!$product) { throw $this->createNotFoundException('The product does not exist'); } // continue with the normal flow if no exception is thrown

https://riptutorial.com/it/home 8

Page 12: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

return $this->render(...); }

Utilizzo dei dati dall'oggetto Richiesta

Se è necessario accedere all'oggetto Request (ad esempio per leggere i parametri della query, leggere un'intestazione HTTP o elaborare un file caricato), è possibile ricevere la richiesta come argomento del metodo aggiungendo un argomento type-hinted:

use Symfony\Component\HttpFoundation\Request; public function indexAction(Request $request) { $queryParam = $request->query->get('param'); // ... }

Symfony riconoscerà il suggerimento sul tipo e aggiungerà l'argomento della richiesta alla chiamata del controller.

Leggi Controller online: https://riptutorial.com/it/symfony/topic/10085/controller

https://riptutorial.com/it/home 9

Page 13: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

Capitolo 4: La richiesta

introduzione

La classe Request di Symfony è una rappresentazione orientata agli oggetti della richiesta HTTP. Contiene informazioni quali URL, stringa di query, file caricati, cookie e altre intestazioni provenienti dal browser.

Sintassi

$ Request-> getPathInfo (); // restituisce il percorso (parte locale dell'URL) che viene richiesto (ma senza la stringa di query). Vale a dire quando si visita https://example.com/foo/bar?key=value , questo conterrà / foo / bar

$ Request-> query-> get ( 'id'); // restituisce un parametro stringa di query ($ _GET)•$ request-> query-> get ('id', 1); // restituisce un parametro stringa di query con un valore predefinito

$ Request-> request-> get ( 'name'); // restituisce una variabile del corpo della richiesta ($ _POST)

$ Request-> file-> get ( 'allegato'); // restituisce un'istanza di UploadedFile identificata da "attachment"

$ Request-> cookies-> get ( 'PHPSESSID'); // restituisce il valore di un cookie ($ _COOKIE)•$ Request-> headers-> get ( 'content_type'); // restituisce un'intestazione di richiesta HTTP•$ Request-> getMethod (); // restituisce il metodo di richiesta HTTP (GET, POST, PUT, DELETE, ecc.)

$ Request-> getLanguages (); // restituisce una matrice di lingue accettate dal client•

Examples

Ottenere un parametro stringa di query

Diciamo che vogliamo costruire un elenco impaginato di prodotti, in cui il numero della pagina viene passato come parametro di stringa di query. Ad esempio, per recuperare la terza pagina, andresti a:

http://example.com/products?page=3

La richiesta HTTP non elaborata sarebbe simile a questa:

GET /products?page=3 HTTP/1.1 Host: example.com Accept: text/html User-Agent: Mozilla/5.0 (Macintosh)

Per ottenere il numero di pagina dall'oggetto richiesta, è possibile accedere alla proprietà della

https://riptutorial.com/it/home 10

Page 14: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

query :

$page = $request->query->get('page'); // 3

Nel caso di un parametro di page , probabilmente vorrai passare un valore predefinito nel caso in cui il parametro della stringa di query non sia impostato:

$page = $request->query->get('page', 1);

Ciò significa che quando qualcuno visita http://example.com/products (notare l'assenza della stringa di query), la variabile $page conterrà il valore predefinito 1 .

Creazione di un oggetto Request da variabili globali

PHP espone un certo numero di variabili globali cosiddette che contengono informazioni sulla richiesta HTTP, come $_POST , $_GET , $_FILES , $_SESSION , ecc. La classe Request contiene un metodo statico createFromGlobals() per istanziare una richiesta oggetto basato su queste variabili:

use Symfony\Component\HttpFoundation\Request; $request = Request::createFromGlobals();

Quando si utilizza il framework Symfony, non è necessario creare un'istanza dell'oggetto request. Invece, dovresti usare l'oggetto che viene istanziato quando il framework è bootstrap in app.php / app_dev.php . Ad esempio digitando l'oggetto richiesta nel controller .

Accesso a una variabile POST

Per ottenere il contenuto di un modulo inviato con method="post" , utilizzare la proprietà post :

$name = $request->request->get('name');

Accedere ai contenuti di un cookie

$id = $request->cookies->get('PHPSESSID');

Ciò restituirà il valore del cookie 'PHPSESSID' inviato dal browser.

Leggi La richiesta online: https://riptutorial.com/it/symfony/topic/10097/la-richiesta

https://riptutorial.com/it/home 11

Page 15: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

Capitolo 5: Routing

introduzione

Il routing è il processo di mappatura di un URL a un controller . Symfony ha un potente componente di Routing che ti permette di definire i percorsi.

Il componente Routing supporta numerosi formati di configurazione: annotazioni, YAML, XML e PHP raw.

Parametri

Parametro Dettagli

nome Il nome del percorso. Esempio: book_show

sentiero Il percorso (potrebbe contenere caratteri jolly). Esempio: /book/{isbn}

default Valori predefiniti dei parametri

Examples

Percorsi semplici

Utilizzando YAML:

# app/config/routing.yml blog_list: path: /blog defaults: { _controller: AppBundle:Blog:list }

Utilizzando annotazioni:

// src/AppBundle/Controller/BlogController.php namespace AppBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; class BlogController extends Controller { /** * @Route("/blog", name="blog_list") */ public function listAction() { // ... }

https://riptutorial.com/it/home 12

Page 16: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

}

Una richiesta per l'URL /blog verrà gestita dal metodo listAction() del BlogController all'interno di AppBundle .

Percorsi con segnaposti

Utilizzando YAML:

# app/config/routing.yml blog_show: path: /blog/{slug} defaults: { _controller: AppBundle:Blog:show }

Utilizzando annotazioni:

// src/AppBundle/Controller/BlogController.php namespace AppBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; class BlogController extends Controller { /** * @Route("/blog/{slug}", name="blog_show") */ public function showAction($slug) { // ... } }

Qualsiasi richiesta con un URL corrispondente /blog/* sarà gestita dal metodo showAction() di BlogController all'interno di AppBundle . L'azione del controller riceverà il valore del segnaposto come argomento del metodo.

Ad esempio, una richiesta per /blog/my-post attiverà una chiamata a showAction() con un argomento $slug contenente il valore my-post . Utilizzando tale argomento, l'azione del controller può modificare la risposta in base al valore del segnaposto, ad esempio recuperando il post del blog con lo slug my-post dal database.

Valori predefiniti per segnaposti

Se vuoi avere un segnaposto che può essere omesso, puoi dargli un valore predefinito:

Utilizzando YAML:

# app/config/routing.yml blog_list: path: /blog/{page} defaults: { _controller: AppBundle:Blog:list, page: 1 }

https://riptutorial.com/it/home 13

Page 17: symfony - riptutorial.com · Capitolo 1: Iniziare con symfony Osservazioni Symfony è un insieme di componenti PHP riutilizzabili, che possono essere usati separatamente o come parte

requirements: page: '\d+'

Utilizzando annotazioni:

// src/AppBundle/Controller/BlogController.php namespace AppBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; class BlogController extends Controller { /** * @Route("/blog/{page}", name="blog_list", requirements={"page": "\d+"}) */ public function listAction($page = 1) { // ... } }

In questo esempio, sia gli URL /blog e /blog/1 corrisponderanno al percorso blog_list e saranno gestiti dal metodo listAction() . Nel caso di /blog , listAction() riceverà comunque l'argomento $page , con il valore predefinito 1 .

Leggi Routing online: https://riptutorial.com/it/symfony/topic/10084/routing

https://riptutorial.com/it/home 14