# 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
$ symfony new my_project_name
Ú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.*"
Con el siguiente comando iniciamos el servidor web:
$ cd my_project_name/
$ php bin/console server:run
Instalar plugins:
- Symfony Plugin
- PHP Annotations
Para instalarlos, seguir los siguientes pasos:
-
Seleccionar el proyecto
-
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)
-
Una vez instalado cada el plugin, reiniciar el IDE.
-
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.
-
Excluir la carpeta /var/cache: Para esto click derecho en la carpeta cache -> click en "Mark Directory as" -> "Excluded".
app/config/parameters.yml: En este archivo se encuentra la configuración a la BD y al mailer.
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"
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
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