Slide 1

Slide 1 text

@sylzys Approche pratique de Symfony 2 1 jeudi 30 janvier 14

Slide 2

Slide 2 text

@sylzys Au programme 2 jeudi 30 janvier 14

Slide 3

Slide 3 text

@sylzys Symfony Version 1 en 2005 Version 2 en 2011 Créé par SensioLabs (Fabien Potencier) Edité en open source + de 850 contributeurs, + de 1600 bundles 3 jeudi 30 janvier 14

Slide 4

Slide 4 text

@sylzys Des centaines d’applications et de sites Drupal, PhpBB, eZ Publish, Composer, Magento, Doctrine, Silex,Propel, BBC...* http://symfony.com/projects http://trac.symfony-project.org/wiki/ ApplicationsDevelopedWithSymfony * et même YouPorn 4 jeudi 30 janvier 14

Slide 5

Slide 5 text

@sylzys La philosophie Symfony «Symfony demande de convertir une Request en Response» 1 class DefaultController extends Controller 2 { 3 public function indexAction($name) 4 { 5 //place your code here :) 6 return new Response (sprintf('Hello %s', $name)); 7 } 8 } 5 jeudi 30 janvier 14

Slide 6

Slide 6 text

@sylzys 1 class DefaultController extends Controller 2 { 3 public function indexAction() 4 { 5 //place your code here :) 6 $title = "Welcome to CaenCamp"; 7 return $this->render ('FooBundle:Bar:index.html.twig', array("title" => $title)); 8 } 9 } La philosophie Symfony 6 jeudi 30 janvier 14

Slide 7

Slide 7 text

@sylzys Le templating «Twig est un moteur de templating moderne pour PHP» Développé par SensioLabs Rapide Extensible Héritage de template Méthodes spécifiques http://twig.sensiolabs.org/documentation 7 jeudi 30 janvier 14

Slide 8

Slide 8 text

@sylzys Le templating 1 {% extends "CaencampConfBundle::layout.html.twig" %} 2 3 {% block title %} 4 Detail - {{ parent() }} 5 {% endblock %} 6 7 {% block body %} 8 9

Bienvenue {{ prenom ~ nom|upper }}

10 Lorem ipsum dolor sit amet, consectetur adipisicing elit. 11 Quia, laborum, et, adipisci, eaque odio nesciunt minima... 12 13 {% endblock %} 8 jeudi 30 janvier 14

Slide 9

Slide 9 text

@sylzys Le templating base.html.twig index.html.twig layout.html.twig 9 jeudi 30 janvier 14

Slide 10

Slide 10 text

@sylzys Le routing 1 class DefaultController extends Controller 2 { 3 /** 4 * 5 * @Extra:Route("/show/conf/{$id}") 6 */ 7 public function showConferenceAction(Conf $conf) 8 { 9 //place your code here :) 10 $title = $conf->getTitle(); 11 return $this->render('FooBundle:Bar:index.html.twig', array("title" => $title)); 12 } 13 } OU 1 caencamp_voir_conf: 2 pattern: /show/conf/{$id} 3 defaults: { _controller: CaencampConfBundle:Default:showConference } 10 jeudi 30 janvier 14

Slide 11

Slide 11 text

@sylzys Le debug facilité • Web debug Toolbar • Stacktrace • Affichage direct des logs • Profiler Application 11 jeudi 30 janvier 14

Slide 12

Slide 12 text

@sylzys Database 12 1 /** 2 * Conf 3 * @ORM\Table() 4 * @ORM\Entity 5 */ 6 class Conf 7 { 8 /** 9 * @var integer 10 * @ORM\Column(name="id", type="integer") 11 * @ORM\Id 12 * @ORM\GeneratedValue(strategy="AUTO") 13 */ 14 private $id; 15 16 /** 17 * @var string 18 * @ORM\Column(name="title", type="string", length=255) 19 */ 20 private $title; 21 22 /** 23 * @var \DateTime 24 * @ORM\Column(name="date", type="datetime") 25 */ 26 private $date; 27 28 /** 29 * @ORM\ManyToMany(targetEntity="Caencamp\Conf\Entity\Conf", mappedBy="confs") 30 */ 31 private $speakers; 32 33 /** 34 * @var string 35 * @ORM\Column(name="topic", type="text") 36 */ 37 private $topic; 38 [...] jeudi 30 janvier 14

Slide 13

Slide 13 text

@sylzys 13 Les formulaires • Protection CSRF native • Intégration avec Twig • Couplage au framework Validation • Création facilitée en ligne de commande jeudi 30 janvier 14

Slide 14

Slide 14 text

@sylzys 14 Les formulaires 1 public function addConfAction($type) 2 { 3 $conf = new Conf(); 4 $form = $this->createForm(new ConfType, $conf); 5 6 $request = $this->get('request'); 7 if ($request->getMethod() == 'POST'){ 8 $form->bind($request); 9 if ($form->isValid()){ 10 //do something with data 11 } 12 } 13 return $this->redirect($this->generateUrl('caencamp_accueil')); 14 } jeudi 30 janvier 14

Slide 15

Slide 15 text

@sylzys DEMO TIME 15 fr.lego.wikia.com jeudi 30 janvier 14

Slide 16

Slide 16 text

@sylzys 16 Mais c’est aussi... • Des services • Des évenements • Du multilangue facilité • Assetic • FOSUserBundle • ... jeudi 30 janvier 14

Slide 17

Slide 17 text

@sylzys 17 Liens utiles • http://symfony.com/doc/current/book • https://packagist.org/ • http://docs.doctrine-project.org/projects/doctrine- orm/en/latest/ • http://www.symfony2cheatsheet.com/ • http://johnkary.net/blog/useful-commands-for- efficient-symfony2-development/ jeudi 30 janvier 14

Slide 18

Slide 18 text

@sylzys 18 Merci Des questions ? jeudi 30 janvier 14