Upgrade to Pro — share decks privately, control downloads, hide ads and more …

symfony madrid - directorio betabeers

Betabeers
March 02, 2012
390

symfony madrid - directorio betabeers

Betabeers

March 02, 2012
Tweet

Transcript

  1. Directorio Betabeers
    5 meses | 613 commits | 2342 redbulls
    @miquelcamps

    View Slide

  2. Eduardo Gulias
    ¡Gracias por los 20 commits!

    View Slide

  3. Estructura
    - Pajas mentales con symfony
    - Entorno de trabajo, Bundles, Bloques, integración bootstrap.io
    - Chapuzas
    - Métricas
    - Gamificación
    - Capturas backoffice
    - Cosas por hacer

    View Slide

  4. ¿Por qué symfony?
    - Lo conocí en la php conference barcelona
    - No tenía experiencia con frameworks
    - Proyectos ya lo usan en producción producción (ulabox,facultia)
    - Comunidad
    - Documentación

    View Slide

  5. Lo que me gusta
    1- Actualización de tablas
    app/console doctrine:schema:update --force
    2- Generador
    app/console generate:bundle
    3- Estructura de ficheros
    4- Twig y los bloques
    5- Comunidad

    View Slide

  6. No me gusta
    1- Tamaño
    2- Error al editar un controlador

    View Slide

  7. php app/console cache:clear

    View Slide

  8. View Slide

  9. Entorno de trabajo
    local --> github --> producción

    View Slide

  10. Entorno de trabajo
    1- local (mac + mamp + sublimetext2 + redbull)
    2- commit github (github client mac)
    http://github.com/miquelcamps/directoriopro
    3- pull servidor dedicado kemsirve.es (linux ubuntu)
    Comando mágico
    git pull;rm -rf app/cache/prod/;mkdir app/cache/prod;chmod 777
    app/cache/prod

    View Slide

  11. Bundles
    De terceros
    Pagerfanta de Pablo Díez @pablodip
    https://github.com/whiteoctober/Pagerfanta
    Propios
    Anuncios
    User
    Event
    Place
    Test
    Api
    City
    Project

    View Slide

  12. Bloques Layout
    /AnunciosBundle/Resources/views/layout.html.twig


    {% block title %}{% endblock %} - {{sitename}}
    {% if canonical_url is defined %}{% endif
    %}



    {% block content %}{% endblock %}
    {% block sidebar %}{% endblock %}

    {% block load_src %}{% endblock %}
    {% block script_load %}{% endblock %}


    View Slide

  13. Bloques sección
    /AnunciosBundle/Resources/views/Post/index.html.twig
    {% extends "ApplicationAnunciosBundle::layout.html.twig" %}
    {% block title "Bolsa de empleo 2.0" %}
    {% block sidebar %}bla bla{% endblock %}
    {% block content %}bla bla{% endblock %}
    {% block load_src %}bla bla{% endblock %}
    {% block script_load %}bla bla{% endblock %}

    View Slide

  14. Integración bootstrap.io
    Estáticos
    /web/ -> ficheros
    Template layout
    /AnunciosBundle/Resources/views/layout.html.twig
    Template form
    /AnunciosBundle/Resources/views/Form/fields.html.twig
    /AnunciosBundle/Resources/views/Post/new.html.twig

    View Slide

  15. Integrar bootstrap.io en formularios
    $form = $this->createForm(new LoginType(), $entity);
    $form['pass']->addError( new SymfonyForm\FormError( "La contraseña no es correcta" ));

    View Slide

  16. Integrar bootstrap.io en formularios
    {% form_theme form 'ApplicationAnunciosBundle:Form:fields.html.twig' %}

    {{ form_row(form.email, { 'label': 'Email' }) }}

    Crear cuenta

    {{ form_row(form._token) }}

    View Slide

  17. Chapuzas - facebook connect
    No he podido hacer funcionar FOS (friends of symfony)
    1- login facebook fbloginAction()
    /src/Application/UserBundle/
    2- se require del ejemplo de facebook
    /vendor/facebook/example.php
    https://github.com/facebook/php-sdk

    View Slide

  18. Chapuzas - URLs bonitas
    /post/86/show --> /post/esto-es-una-prueba-9/
    urls en twig
    {{ path('post_show', { 'id': entity.id, 'slug': entity.slug }) }}
    controller action 1
    @Route("/{id}/show", name="post_show2")
    $this->redirect($this->generateUrl('post_show', array('id' => $entity->getID(),
    'slug' => $entity->getSlug() )),301);
    controller action 2
    @Route("/{slug}-{id}/", requirements={"slug" = "[a-z0-9\-]+", "id" = "^\d+$"},
    name="post_show")
    layout
    {% if canonical_url is defined %}

    {% endif %}

    View Slide

  19. Métricas
    Contabilizar visitas
    $session = $this->getRequest()->getSession();
    $session_id = $session->get('id');
    if( $session_id != $entity->getUserId() ){
    $entity->setVisits( $entity->getVisits() + 1 );
    $em->persist($entity);
    $em->flush();
    }
    Geolocalización geonames.org (country_id, city_id)
    Dashboard (totales generales)
    Google Analytics analizar que busca el usuario
    https://support.google.com/analytics/bin/answer.py?hl=es&answer=1012264

    View Slide

  20. Gamificación
    Captar nuevos usuarios

    View Slide

  21. Gamificación

    View Slide

  22. Gamificación

    View Slide

  23. Gamificación
    Obligar el usuario a rellenar perfil

    View Slide

  24. Dashboard

    View Slide

  25. Backoffice anuncios

    View Slide

  26. Backoffice usuarios

    View Slide

  27. Cosas por hacer...
    - Optimizar queries (likes) y cacheo
    - Internacionalización
    - Hacer autoescalable mover a phpfog
    - Mejorar seo (sitemaps, urls bonitas)

    View Slide

  28. Megacracks de symfony
    @egulias
    @raulfraile
    @nacmartin
    @ricardclau
    @Osukaru80
    @moisesgallego

    View Slide

  29. ¡Gracias!
    Posts de como empezar:
    http://miquelcamps.com/symfony/
    Repositorio betabeers:
    http://github.com/miquelcamps/directoriopro
    Twitter
    @miquelcamps

    View Slide