Crear Proyecto Symfony 5.2

  • Autor de la entrada:
  • Categoría de la entrada:Symfony
  • Comentarios de la entrada:Sin comentarios

Instalar Symfony va será el primer paso que vamos a recorrer en este curso o tutoriales según si lo hagas lineal o solo uses esta web como un manual de referencia rápido.

Introducción

Si estas aquí es por que o ya conoces symfony o estas empezando tu camino en este framework.

Symfony es uno de los framework más extendidos en lenguaje PHP. Acutalmetne se disputa el primer puesto con Laravel con el que se empezara en esta misma web un curso en breve.

Por que debo elegir symfony

Realmente yo llevo ya mucho tiempo tanto con symfony como con Laravel y ambos son estupendos framework. Como en todos lados habrá cosas que te gusten más en uno que en otro. Pero realmente a la hora de decantarse por uno solo son predilecciones personales.

Requisitos técnicos

Antes de empezar a instalar Symfony, hay que cumplir unos requisitos técnicos

El propio Symfony tiene un cliente para poder crear los proyectos, pero realmente no es necesario y en este manual no lo vamos a utilizar.

Creando nuestro proyecto

A la hora de crear nuestro proyecto podemos elegir entre un microsite o una aplicación web, pero en este curso vamos a utilizar directamente el de aplicación web. La diferencia entre estos 2 tipos simplemente es el numero de paquetes instalados.

Ejecutaremos el siguiente comando, estando en el lugar donde queramos instalar symfony.

composer create-project symfony/website-skeleton miprimerproyecto

Esto nos creara una carpeta llamada «miprimerproyecto»

cd miprimerproyecto
php -S 127.0.0.1:8000 -t public/

Ahora solo deberemos abrir la url http://localhost:8000/ para poder ver el resultado de lo que hemos hecho

Instalar symfony

Estructura del proyecto

Después de instalar Symfony, vamos a dar un repaso a las distintas carpetas y ficheros que forman nuestro proyecto, en este Framework recién creado.

Con el tiempo y conforme vayamos avanzando el curso, aparecerán nuevo documentos y carpetas con los que iremos aumentando las funcionalidades del proyecto.

Directorios

bin

Esta carpeta contiene los ejecutables, entre ellos phpunit y el comando que usaremos has la saciedad console. Si desde la raíz del proyectos escribes el siguiente comanda veras la variedad de opciones que nos ofrece

php bin/console

config

En esta carpeta encontraremos todos los ficheros de configuración. No tengas prisa en intentar conocerlos todos, realmente la configuración es muy fácil e iremos viéndolo conforme avancemos en el curso.

migrations

En esta carpeta se encuentran las migraciones. Son unos ficheros que nos ayudaran a realizar los cambios necesarios en las bases de datos, conforme vayamos evolucionando nuestro proyecto y cambiando de versión.

public

Esta será la parte visible de nuestro proyecto y donde podrás encontrar css, js o imágenes.

src

En esta carpeta estarán los ficheros que darán la funcionalidad a nuestro proyecto

templates

Sera utilizada para las plantillas twig de nuestro proyecto

test

Aquí tenemos los test que realizaremos sobre nuestro Proyecto.

translations

Esté es el lugar donde están los ficheros de traducción, que nos permiten la traducción de nuestra aplicación.

var

En este lugar estarán cache y logs que nos permitirán agilizar y analizar nuestra aplicación.

vendor

En esta carpeta se encuentran los bundles de nuestra aplicación.

Ficheros

.env

En este ficheros tenemos la configuración básica de nuestra aplicación.(Entorno, secreto, conexión a base de datos)

.gitignore

Ficheros y carpetas que deberán ser ignoradas por defecto a la hora de subir el proyecto a git.

composer.json

Este fichero esta generado por composer, y contiene las librerías que forman el proyecto.

Como subir nuestro proyecto a Git

Tras instalar Symfony vamos a subir nuestro proyecto a este sistema de versiones. Si no lo conoces Git es un sistema de versiones. Y en la actualidad de los más usados

1.Inicializamos git

La inicialización de Git en nuestro proyecto es tan fácil como ejecutar el siguiente comando.

> git init

Esto generara una serie de ficheros que precisa Git para manejar el sistema de versiones.

Con el siguiente fichero añadiremos los ficheros al control de versiones.

git add .

Creamos nuestra primera subida.

 git commit -m "Subida inicial"

Para el siguiente paso deberemos tener tener acceso a un servidor de Git.

Si no a tienes uno puedes conseguir una cuenta en GitHub o Bitbucket

git remote add origin https://github.com/ktinformatica/miprimerproyecto.git

Por ultimo solo nos faltara subir todo a nuestro servidor

git push -u origin master

Después de realizar esto te pedirán usuario y contraseña para poder realizar la subida.

Configuración de base de datos

La configuración de la base de datos se encuentra en el ficheor .env.

Dependiendo del sistema de base de datos que utilicemos, deberemos ajustar la configuración con los datos pertinentes.

Aquí tenéis deferente ejemplos.

DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
DATABASE_URL="mysql://ktinformatica:password@127.0.0.1:3306/miprimerproyecto?serverVersion=5.7"
DATABASE_URL="postgresql://ktinformatica:passwordd@127.0.0.1:5432/miprimerproyecto?serverVersion=13&charset=utf8"

donde «ktinformatica» será el usuario de base de datos. «password» nuestra contraseña y «miprimerproyecto» el nombre de la base de datos.

Si la base de datos no ha sido creada aun la podremos crear con el siguiente comando.

php bin/console doctrine:database:create

Creamos la primera pagina.

A la hora de generar la mayoría de archivos que hay en Symfony vamos a poder generarlos desde la consola.

En primer lugar para generar nuestra página vamos a empezar creando un controller.

 php bin/console make:controller

 Choose a name for your controller class (e.g. FiercePizzaController):
 > HomeController

 created: src/Controller/HomeController.php
 created: templates/home/index.html.twig


  Success!


 Next: Open your new controller class and add some pages!

Después de ejecutar este comando obtendremos 2 ficheros un fichero controller y un template de twig

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class HomeController extends AbstractController
{
    /**
     * @Route("/home", name="home")
     */
    public function index(): Response
    {
        return $this->render('home/index.html.twig', [
            'controller_name' => 'HomeController',
        ]);
    }
}
{% extends 'base.html.twig' %}

{% block title %}Hello HomeController!{% endblock %}

{% block body %}
<style>
    .example-wrapper { margin: 1em auto; max-width: 800px; width: 95%; font: 18px/1.5 sans-serif; }
    .example-wrapper code { background: #F5F5F5; padding: 2px 6px; }
</style>

<div class="example-wrapper">
    <h1>Hello {{ controller_name }}! ✅</h1>

    This friendly message is coming from:
    <ul>
        <li>Your controller at <code><a href="{{ 'C:/wamp64/www/miprimerproyecto/src/Controller/HomeController.php'|file_link(0) }}">src/Controller/HomeController.php</a></code></li>
        <li>Your template at <code><a href="{{ 'C:/wamp64/www/miprimerproyecto/templates/home/index.html.twig'|file_link(0) }}">templates/home/index.html.twig</a></code></li>
    </ul>
</div>
{% endblock %}

Pero vamos a analizar estos 2 ficheros y explicar que hace.

	/**
     * @Route("/home", name="home")
     */

Esta anotación es la que indica la dirección de la pagina que acabamos de crear. En los controller de symfony esta anotación se puede colocar tanto a la clase como a la función. En el ejemplo anterior la ruta seria «midominio/home«.

Cuando estamos realizando una gestión de una entidad(CRUD) utilizaremos un comentario en en el controller pero este ejemplo lo veremos más adelante.

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class HomeController extends AbstractController
{
    /**
     * @Route("/home", name="home")
     */
    public function index(): Response
    {
        return $this->render('home/index.html.twig', [
            'controller_name' => 'HomeController',
        ]);
    }
}

En la función render del controller le estamos indicando que fichero twig queremos que renderice y le pasamos un array de valores.

Sistema de seguridad

Cuando hablamos de añadir la seguridad en primer lugar nos referimos a realizar un sistema de gestión de usuarios y en segundo lugar un sistema de autentificación que nos permita entrar a nuestro sistema.

Empecemos por instalar el paquete necesario para realizar las acciones que deseamos.

composer require symfony/security-bundle

Deja una respuesta