Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Migrare da symfony 1 a Symfony2

1,178 views

Published on

Published in: Technology

Migrare da symfony 1 a Symfony2

  1. 1. Migrare da symfony 1a Symfony2Massimiliano Arione @garakkio Torino, 5 ottobre 2012
  2. 2. symfony 1 end of life: nov. 2012
  3. 3. cosa non è Symfony 2
  4. 4. cosa non è Symfony 2
  5. 5. cosa è Symfony2
  6. 6. Dependency Injection Container
  7. 7. come funziona il DIC<?php$mailer = $this->get(mailer);
  8. 8. come funziona il DIC<?php$mailer = $this->get(mailer); niente più sfContext!
  9. 9. come funziona il DIC<?php$mailer = $this->get(newsletter);<?phpnamespace AcmeMyBundle;class Newsletter{ protected $mailer; public function __construct(Swift_Mailer $mailer) { $this->mailer = $mailer; }}
  10. 10. come funziona il DIC<?phpnamespace AcmeMyBundle;use DoctrineORMEntityManager;class Newsletter{ protected $mailer, $em; public function __construct(Swift_Mailer $mailer, EntityManager $em) { $this->mailer = $mailer; $this->em = $em; }}
  11. 11. test
  12. 12. model
  13. 13. model$ app/console doctrine:mapping:import AcmeMyBundle annotation$ app/console doctrine:generate:entities AcmeMyBundle --no-backup
  14. 14. model<?phpnamespace AcmeMyBundleEntity;use DoctrineORMMapping as ORM;/** * @ORMTable(name="category") * @ORMEntity */class Category{ /** * @ORMColumn(name="id", type="integer") * @ORMId * @ORMGeneratedValue(strategy="AUTO") */ private $id; /** * @ORMColumn(name="name", type="string", length=255) */ private $name;}
  15. 15. alcuni bundle da aggiungerestof/doctrine-extensions-bundlefriendsofsymfony/user-bundlesonata-project/doctrine-orm-admin-bundle
  16. 16. alcuni bundle da aggiungerestof/doctrine-extensions-bundle (sf1: behaviours)friendsofsymfony/user-bundle (sf1: sfGuardPlugin)sonata-project/doctrine-orm-admin-bundle (sf1: admin generator)
  17. 17. controller<?php /** * Lists all Category entities. * * @Route("/", name="category") * @Template() */ public function indexAction() { $em = $this->getDoctrine()->getManager(); $entities = $em->getRepository(AcmeMyBundle:Category)->findAll(); return array( entities => $entities, ); }
  18. 18. controller/** * @Route("/{id}/show", name="category_show") * @Template() */public function showAction($id){ $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository(AcmeMyBundle:Category)->find($id); if (!$entity) { throw $this->createNotFoundException(Unable to find Category entity.); } $deleteForm = $this->createDeleteForm($id); return array( entity => $entity, delete_form => $deleteForm->createView(), );}
  19. 19. /** * @Route("/create", name="category_create") * @Method("POST") controller * @Template("AcmeMyBundle:Category:new.html.twig") */ public function createAction(Request $request) { $entity = new Category(); $form = $this->createForm(new CategoryType(), $entity); $form->bind($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($entity); $em->flush(); return $this->redirect($this->generateUrl(category_show, array(id =>$entity->getId()))); } return array( entity => $entity, form => $form->createView(), ); }
  20. 20. view{% extends AcmeMyBundle::layout.html.twig %}{% block content %} <h1>Category list</h1> <table class="table table-striped table-hover table-bordered records_list"> <tbody> {% for entity in paginator %} <tr> <td><a href="{{ path(category_show, { id: entity.id }) }}">{{ entity.id}}</a></td> <td>{{ entity.name }}</td> <td class="btn-group"> {# ... #} </td> </tr> {% endfor %} </tbody> </table>{% endblock %}
  21. 21. cachehttp
  22. 22. domande?
  23. 23. grazie!linkshttp://twitter.com/garakkiohttp://www.slideshare.net/garakcreditshttp://text2pic.com/http://symfony.com/trademarkhttp://php.net/download-logos.phphttp://doophp.com/temp/guide/mvcabout.pnghttp://grigio.org/html5-linux-day/stuff/client-server.pnghttps://elearning.industriallogic.com/gh/albums/wrappersAndWalkers/injector/images/big-tomatoes.gifhttp://openclipart.org/image/800px/svg_to_png/94723/db.pnghttp://clivemind.com/wp-content/uploads/2012/07/logo.pnghttp://www.kidsvoting.dreamhosters.com/uploads/images/vote_1.jpghttp://markup.su/highlighter/

×