Skip to content

Instantly share code, notes, and snippets.

@aduartem
Last active July 9, 2017 23:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aduartem/a742d8ac4a22dde713be94894203ad8d to your computer and use it in GitHub Desktop.
Save aduartem/a742d8ac4a22dde713be94894203ad8d to your computer and use it in GitHub Desktop.
Symfony

Symfony

Instalador Symfony

# Sistemas Linux y Mac OS
$ 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

Creando un proyecto Symfony

$ symfony new my_project_name

Creando un proyecto Symfony con Composer

Última versión estable:

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

Indicando la versión:

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

Iniciando una aplicación Symfony

Con el siguiente comando iniciamos el servidor web:

$ cd my_project_name/
$ php bin/console server:run

phpStorm y Symfony

Instalar plugins:

  • Symfony Plugin
  • PHP Annotations

Para instalarlos, seguir los siguientes pasos:

  1. Seleccionar el proyecto

  2. File -> Settings -> Plugins -> en el buscador escribir "Symfony" -> click en "Command Line Tool Support" -> click en el botón "Browse repositories..." -> Seleccionar el plugin a instalar (primero instalar Symfony Plugin y luego PHP Annotations)

  3. Una vez instalado cada el plugin, reiniciar el IDE.

  4. Una vez instalado el plugin "Symfony Plugin" ir a Settings -> click en "Languages & Frameworks" -> Symfony -> check la opción "Enable Plugin for this Project (change need restart)". En "Path to urlGenerator.php (deprecated)" reemplazar app/cache/dev/appDevUrlGenerator.php por var/cache/dev/appDevUrlGenerator.php, en "Translation Root Path" reemplazar app/cache/dev/translations por var/cache/dev/translations. Finalmente reiniciar el IDE.

  5. Excluir la carpeta /var/cache: Para esto click derecho en la carpeta cache -> click en "Mark Directory as" -> "Excluded".

Configuración del proyecto

app/config/parameters.yml: En este archivo se encuentra la configuración a la BD y al mailer.

Línea de comandos

Cambiamos de directorio y vamos a la raiz del proyecto:

$ cd my_project

Listar comandos existentes:

$ php bin/console

Versión de Symfony:

$ php bin/console -V

Debuguear rutas:

$ php bin/console debug:router

Crear BD:

$ php bin/console doctrine:database:create

Eliminar BD:

$ php bin/console doctrine:database:drop --force

Vista previa de query actualizar esquema:

$ php bin/console doctrine:schema:update --dump-sql

Ejemplo salida por pantalla:

CREATE TABLE genus (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;

Vista previa de query actualizar esquema:

$ php bin/console doctrine:schema:update --force

Realizar consultas:

$ php bin/console doctrine:query:sql "SELECT * FROM genus"

DoctrineMigrationsBundle

Descargar el bundle utilizando composer:

$ composer require doctrine/doctrine-migrations-bundle

Habilitar el bundle en AppKernel.php incluyendo lo siguiente

// app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        //...
        new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
    );
}

Creamos la base de datos:

$ php bin/console doctrine:database:create

Crear archivo de migración. Este archivo se crea en base a las diferencias que hay entre el esquema de base de datos y las entidades definidas:

$ php bin/console doctrine:migrations:diff

Realizar migración:

$ php bin/console doctrine:migrations:migrate

DoctrineMigrationsBundle

DoctrineFixturesBundle

Descargar el bundle:

$ composer require --dev doctrine/doctrine-fixtures-bundle nelmio/alice

Habilitar el bundle:

// app/AppKernel.php
// ...

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        // ...
        if (in_array($this->getEnvironment(), array('dev', 'test'))) {
            $bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle();
        }

        return $bundles
    }

    // ...
}

Escribiento Fixtures

Dentro de src/AppBundle crear la carpeta DataFixtures y dentro de DataFixtures crear la carpeta ORM.

Crear una clase que implemente la interface FixtureInterface:

<?php
// src/AppBundle/DataFixtures/ORM/LoadFixtures.php

namespace AppBundle\DataFixtures\ORM;

use AppBundle\Entity\Genus;
use Doctrine\Common\DataFixtures\FixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;

class LoadFixtures implements FixtureInterface
{
    public function load(ObjectManager $manager)
    {
        $genus = new Genus();
        $genus->setName('Octopus'.rand(1, 100));
        $genus->setSubFamily('Octopodinae');
        $genus->setSpeciesCount(rand(100, 99999));

        $manager->persist($genus);
        $manager->flush();
    }
}
$ php bin/console doctrine:fixtures:load

DoctrineFixturesBundle

Recursos

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment