Symfony – 【Garber Informática】Soluciones Web https://garberinformatica.com Diseño, Programación y Marketing Online Mon, 13 Apr 2020 08:00:12 +0000 es hourly 1 https://wordpress.org/?v=5.4.2 https://garberinformatica.com/wp-content/uploads/2019/06/cropped-logo-garber-bn-32x32.png Symfony – 【Garber Informática】Soluciones Web https://garberinformatica.com 32 32 Aplicación Web Base Symfony 4.2 https://garberinformatica.com/aplicacion-web-base-symfony-4-2/ https://garberinformatica.com/aplicacion-web-base-symfony-4-2/#respond Mon, 21 Jan 2019 18:28:30 +0000 https://garberinformatica.com/?p=14009 En esta ocasión os traigo algo para facilitar el desarrollo de vuestras aplicaciones web. Se trata de un git con Aplicación Web Base Symfony 4.2, incluyendo las principales características que una aplicación web básica utiliza hoy en día (al menos las indispensables en mis desarrollos) Iré ampliando las distintas opciones que una aplicación web básica ... Leer más Aplicación Web Base Symfony 4.2

La entrada Aplicación Web Base Symfony 4.2 se publicó primero en 【Garber Informática】Soluciones Web.

]]>
En esta ocasión os traigo algo para facilitar el desarrollo de vuestras aplicaciones web.

Se trata de un git con Aplicación Web Base Symfony 4.2, incluyendo las principales características que una aplicación web básica utiliza hoy en día (al menos las indispensables en mis desarrollos)

Iré ampliando las distintas opciones que una aplicación web básica con Symfony ( o al menos aquello que yo siempre suelo utilizar y que no viene “por defecto” en Symfony).

Esta aplicación Base 1 tiene las siguientes características:

  • Bootstrap 4.2.1
  • WebPack
  • Flex
  • Twig (con algunas plantillas ya preparadas)
  • Doctrine

Podéis clonar el git en:

Shell

Es muy sencillo añadir las distintas opciones con Symfony 4.2, pero aquí ya tienes algo “básico” con lo que empezar.

Extracto del composer.json

PHP

Espero que os sea de utilidad.

La entrada Aplicación Web Base Symfony 4.2 se publicó primero en 【Garber Informática】Soluciones Web.

]]>
https://garberinformatica.com/aplicacion-web-base-symfony-4-2/feed/ 0
Obtener parámetros en el controlador de Symfony 4.2 https://garberinformatica.com/obtener-parametros-en-el-controlador-de-symfony-4-2/ https://garberinformatica.com/obtener-parametros-en-el-controlador-de-symfony-4-2/#respond Wed, 24 Oct 2018 17:16:36 +0000 https://garberinformatica.com/?p=13726 APUNTES | Obtener parámetros en el controlador de Symfony 4.2   Disponemos de dos formas para obtener los parámetros en los controladores de Symfony: La manera quizás más rápida y fácil es: class IndexController extends SymfonyController { public function listAction() { $ApiKey = $this->container->getParameter('api_key'); } } A partir de Symfony 4.1 podemos obtener los parámetros ... Leer más Obtener parámetros en el controlador de Symfony 4.2

La entrada Obtener parámetros en el controlador de Symfony 4.2 se publicó primero en 【Garber Informática】Soluciones Web.

]]>
APUNTES | Obtener parámetros en el controlador de Symfony 4.2

 

Disponemos de dos formas para obtener los parámetros en los controladores de Symfony:

La manera quizás más rápida y fácil es:

class IndexController extends SymfonyController
{
    public function listAction()
    {
        $ApiKey = $this->container->getParameter('api_key');
    }
}

A partir de Symfony 4.1 podemos obtener los parámetros como un servicio:

Obteniendo los parámetros de contenedor como un servicio

En el ejemplo suponemos que tenemos los parámetros de conexión a una Api:

/config/services.yaml

parameters:
    locale: 'es'
    api_client: 'xxxx'
    api_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

services:
    # default configuration for services in *this* file
    _defaults:
        autowire: true # Automatically injects dependencies in your services.
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
        public: false # Allows optimizing the container by removing unused services; this also means
    # fetching services directly from the container via $container->get() won't work.
    # The best practice is to be explicit about your dependencies anyway.
    bind:
       $cli: '%api_client%'
       $apikey: '%api_key%'

Con bind y autowire los pasamos al servicio y ya los tenemos disponibles en los controladores.

 

Después para obtener los parámetros en el controlador:

<?php

namespace App\Controller\cliente;

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

/**
* @Route("/articulo")
*/

class ArticuloController extends Controller{

    private $cli;
    private $apikey;

// los pasamos al constructor y ya los tenemos disponibles para el resto de métodos.
public function __construct(string $cli, string $apikey){
    $this->cli = $cli;
    $this->apikey = $apikey;
}

/**
* @Route("/")
*/
public function indexAction(){

    $articuloJSON = file_get_contents(
           "http://www.example.com/api/?r=es/articulo/1004&cli=$this->cli&apikey=$this->apikey");
    $articuloArray = json_decode($articuloJSON,true);

    return $this->render('index.html.twig', array("articulo" => $articuloArray));
}

 

Espero que os sea de utilidad, cualquier cosa comentad 😉

FuenteFuenteFuente

 

La entrada Obtener parámetros en el controlador de Symfony 4.2 se publicó primero en 【Garber Informática】Soluciones Web.

]]>
https://garberinformatica.com/obtener-parametros-en-el-controlador-de-symfony-4-2/feed/ 0
Como crear cookies en Symfony https://garberinformatica.com/como-crear-cookies-en-symfony/ https://garberinformatica.com/como-crear-cookies-en-symfony/#comments Mon, 04 Jun 2018 10:09:46 +0000 https://garberinformatica.com/?p=13591 Cookies en Symfony En esta sección nos centraremos en el uso de cookies en Symfony. Cualquier página hoy en día usa cookies para almacenar datos, como por ejemplo carritos o datos de sesión, cliente, etc. Para implementar una cookie en Symfony tenemos que incluir sus funciones en nuestro controlador, así como las de REQUEST y ... Leer más Como crear cookies en Symfony

La entrada Como crear cookies en Symfony se publicó primero en 【Garber Informática】Soluciones Web.

]]>
Cookies en Symfony

En esta sección nos centraremos en el uso de cookies en Symfony. Cualquier página hoy en día usa cookies para almacenar datos, como por ejemplo carritos o datos de sesión, cliente, etc.

Para implementar una cookie en Symfony tenemos que incluir sus funciones en nuestro controlador, así como las de REQUEST y RESPONSE:

use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

Una vez hecho solo tenemos que declarar nuestra cookie en nuestra función:

 $response = new Response();

 $time = time() + (3600 * 24 * 7);

 $response->headers->setCookie(new Cookie($nombre, $arrayDatos, $time));

 $response->sendHeaders();

Una vez declarada tenemos dos formas de acceder a la misma:

$cookie = $request->cookies->all();

$cookie = $response->headers->getCookies();

//En ambos casos nos devuelven un array con las cookies, por lo que tenemos que recorrerlo con un bucle y seleccionar las que deseemos con un filtro
//Por lo general se usa la segunda, pero hay casos en los que al salir de página
//esta clase de lectura falla y para ello esta la primera.

Para editar una cookie simplemente tienes que volver a declararla con el mismo nombre

Aquí puedes ver otras entradas del blog de Symfony que te pueden interesar:

Resuelve error ORM doctrine

CKEditor en Symfony 4

Editar formulario Easy Admin con Twig

La entrada Como crear cookies en Symfony se publicó primero en 【Garber Informática】Soluciones Web.

]]>
https://garberinformatica.com/como-crear-cookies-en-symfony/feed/ 1
Editar formulario en EasyAdmin Symfony con Twig https://garberinformatica.com/editar-en-formulario-easyadmin-symfony-con-twig/ https://garberinformatica.com/editar-en-formulario-easyadmin-symfony-con-twig/#respond Mon, 04 Jun 2018 08:54:07 +0000 https://garberinformatica.com/?p=13541 Modificar un formulario en EasyAdmin con base en Symfony. En este apartado editaremos un formulario en EasyAdmin, estos formularios suelen crearse automáticamente pero usando Twig podremos adaptarlo a nuestras necesidades. Primero tenemos que editar la “cabecera” el easy_admin.yaml, normalmente lo encontraremos en /config/packages: form_theme: #al mismo nivel de tabulado que el menú - "vertical" - ... Leer más Editar formulario en EasyAdmin Symfony con Twig

La entrada Editar formulario en EasyAdmin Symfony con Twig se publicó primero en 【Garber Informática】Soluciones Web.

]]>
Modificar un formulario en EasyAdmin con base en Symfony.

En este apartado editaremos un formulario en EasyAdmin, estos formularios suelen crearse automáticamente pero usando Twig podremos adaptarlo a nuestras necesidades.

Primero tenemos que editar la “cabecera” el easy_admin.yaml, normalmente lo encontraremos en /config/packages:

form_theme: #al mismo nivel de tabulado que el menú
 - "vertical"
 - 'form.html.twig' #documento donde modificaremos el formulario

Y en el apartado propiedades de la entidad que deseamos modificar añadimos un type_option y un template:

form:
 title: 'Crear / Editar Productos'
 fields:

  - { property: 'availabilityId', label: 'Id de disponibilidad' , type_options: {block_name: 'custom_title', expanded: true, multiple: true, allow_extra_fields: true, trim: true } , template: 'form.html.twig' }
# Es muy importante indicar el nombre de nuestro fichero twig donde editaremos el formulario.
#Así como darle un block_name diferente de otra propiedad de la entidad.

Ya lo tenemos todo listo para modificar el formulario con Twig

Sacaremos los datos que necesitaremos del DOM en el formulario preestablecido por EasyAdmin:

 {% block _product_custom_title_widget %} 

 {{ dump(form) }} //Recomiedno usar el dump para mira como es la estructura del formulario

    {% block entity_form %} 

     {% set children = form.children %}

      <tableborder="1">

        <tr style="background-color: #dadada;"><td style="width:120px;"align="center">ID</td><td style="width:120px;"style="width:100px;"align="center">NOMBRE</td><td style="width:120px;"align="center">SELECCIONE</td></tr>

        {% for key, value in children %}

            <tr><tdalign="center">{{key}}</td><tdalign="center">{{value.vars.label}}</td><tdalign="center"><inputid="product_availabilityId_{{key}}"name="product[availabilityId][]"value="{{key}}"type="checkbox"></td></tr>
              //es importante marcara las ids como las del formulario original, esto puedes verlo con el dump
        {% endfor %}

      </table>

    {% endblock entity_form %}

 {{ dump() }}//Con este dump podremos ver todos los elementos del DOM

{% endblock %}

Puedes editar tú formulario como quieras y añadir cualquier elemento que creas necesario.

Y eso es todo, espero que os haya sido de utilidad. Cualquier duda o comentario será bienvenida.

Aquí puedes ver otros artículos de interés relacionados:

La entrada Editar formulario en EasyAdmin Symfony con Twig se publicó primero en 【Garber Informática】Soluciones Web.

]]>
https://garberinformatica.com/editar-en-formulario-easyadmin-symfony-con-twig/feed/ 0
CKEditor en Symfony 4 con Easy Admin https://garberinformatica.com/ckeditor-en-symfony-4-con-easy-admin/ https://garberinformatica.com/ckeditor-en-symfony-4-con-easy-admin/#respond Sat, 12 May 2018 18:27:10 +0000 https://garberinformatica.com/?p=1329   Instalar CKEditor en Symfony4 es más fácil y rápido de lo que puede parecer.  Si lo habéis intentado instalar siguiendo la guía oficial de Symfony para Easy Admin es posible que os haya dado un error de dependencias de la librería form. CKEditor es un editor de texto enriquecido muy utilizado con el que ... Leer más CKEditor en Symfony 4 con Easy Admin

La entrada CKEditor en Symfony 4 con Easy Admin se publicó primero en 【Garber Informática】Soluciones Web.

]]>
 

Instalar CKEditor en Symfony4 es más fácil y rápido de lo que puede parecer.  Si lo habéis intentado instalar siguiendo la guía oficial de Symfony para Easy Admin es posible que os haya dado un error de dependencias de la librería form.

CKEditor es un editor de texto enriquecido muy utilizado con el que tendremos funciones de procesador de texto en nuestra aplicación web. Puedes conocer más sobre este editor en su página oficial: https://ckeditor.com/

 

CKEditor Screenshot.png
CKEditor Wikimedia Commons

CKEditor en Symfony 4

Para instalarlo en Symfony 4 solamente tienes que ejecutar el siguiente comando, suponemos que utilizas Symfony Flex.

También necesitarás tener instalado en tu sistema la librería de PHP Zip

$ composer require hillrange/ckeditor

 

Una vez hecho, ya puedes integrarlo en el Easy Admin Bundle:

{ property: 'content', type: 'Hillrange\CKEditor\Form\CKEditorType' }

En las pruebas que he realizado, así luce mi easy_admin.yaml:

easy_admin:

    entities:

        Clientes: App\Entity\Clientes

        Otros:

            class: App\Entity\Presupuestos

            form:

                fields:

                   - 'titulo'

                   - { property: 'descripcion', type: 'Hillrange\CKEditor\Form\CKEditorType' }

La propiedad descripcion debe ser de tipo texto.

Y eso es todo, entramos en el servidor de pruebas y comprobamos que funciona correctamente:

 

[/fusion_builder_column][fusion_builder_column type=”1_1″ background_position=”left top” background_color=”” border_size=”” border_color=”” border_style=”solid” spacing=”yes” background_image=”” background_repeat=”no-repeat” padding=”” margin_top=”0px” margin_bottom=”0px” class=”” id=”” animation_type=”” animation_speed=”0.3″ animation_direction=”left” hide_on_mobile=”no” center_content=”no” min_height=”none”]

CKEditor en Symfony4
CKEditor en Symfony4

 

Fuente: https://packagist.org/packages/hillrange/ckeditor

 

¿Necesitas una aplicación web a medida? ¿Algo no funciona como debiera en tu web? Podemos ayudarte, contacta con nosotros aquí.

 

La entrada CKEditor en Symfony 4 con Easy Admin se publicó primero en 【Garber Informática】Soluciones Web.

]]>
https://garberinformatica.com/ckeditor-en-symfony-4-con-easy-admin/feed/ 0
Crear getters y setters Doctrine Symfony 3 / Symfony 4 https://garberinformatica.com/crear-getters-setters-doctrine-symfony3/ https://garberinformatica.com/crear-getters-setters-doctrine-symfony3/#respond Sat, 17 Feb 2018 09:00:10 +0000 https://garberinformatica.com/?p=1133 APUNTES | Crear getters y setters Doctrine Symfony 3 / Symfony 4 Podemos crear getters y setters doctrine utilizando un simple comando:   // Autogenerar getters and setters $ php bin/console doctrine:generate:entities AppBundle:awsProductsShoes El comando anterior auto genera los getters & setters en Symfony3 con Doctrine. Crea tu clase, añadiendo los distintos campos / columnas ... Leer más Crear getters y setters Doctrine Symfony 3 / Symfony 4

La entrada Crear getters y setters Doctrine Symfony 3 / Symfony 4 se publicó primero en 【Garber Informática】Soluciones Web.

]]>
APUNTES | Crear getters y setters Doctrine Symfony 3 / Symfony 4

Podemos crear getters y setters doctrine utilizando un simple comando:

 

// Autogenerar getters and setters

$ php bin/console doctrine:generate:entities AppBundle:awsProductsShoes

El comando anterior auto genera los getters & setters en Symfony3 con Doctrine. Crea tu clase, añadiendo los distintos campos / columnas y una vez finalizada ejecuta el comando anterior para que crear automáticamente los distintos getters / setters de la entidad.

No olvidar añadir el namespace:

namespace AppBundle\Entity;

ACTUALIZACIÓN Symfony 4

Para añadir los getters y setters en Symfony 4 de manera automática, se puede utilizar el comando:

 php bin/console make:entity --regenerate

Se puede añadir –overwrite para sobreescribir los getters/setters que tengamos.

Fuente: https://symfony.com/doc/current/doctrine.html

 

La entrada Crear getters y setters Doctrine Symfony 3 / Symfony 4 se publicó primero en 【Garber Informática】Soluciones Web.

]]>
https://garberinformatica.com/crear-getters-setters-doctrine-symfony3/feed/ 0
Resuelve el error ORM de Doctrine con tablas sin clave principal en MySQL al mapear la base de datos. https://garberinformatica.com/resuelve-error-orm-doctrine-tablas-sin-clave-principal-mysql-al-mapear-la-base-datos/ https://garberinformatica.com/resuelve-error-orm-doctrine-tablas-sin-clave-principal-mysql-al-mapear-la-base-datos/#comments Tue, 12 Dec 2017 19:20:25 +0000 https://garberinformatica.com/?p=1054 Symfony 3.4 En el proyecto trabajo con una base de datos y además tengo que conectar con otras dos bases de datos. Con lo que el config.yml lo tengo de la siguiente manera: # Doctrine Configuration doctrine: dbal: default_connection: bbdd connections: bbdd: driver: pdo_mysql host: '%database_host%' port: '%database_port%' dbname: '%database_name%' user: '%database_user%' password: '%database_password%' charset: ... Leer más Resuelve el error ORM de Doctrine con tablas sin clave principal en MySQL al mapear la base de datos.

La entrada Resuelve el error ORM de Doctrine con tablas sin clave principal en MySQL al mapear la base de datos. se publicó primero en 【Garber Informática】Soluciones Web.

]]>
Symfony 3.4

En el proyecto trabajo con una base de datos y además tengo que conectar con otras dos bases de datos.

Con lo que el config.yml lo tengo de la siguiente manera:

# Doctrine Configuration
doctrine:
    dbal:
        default_connection: bbdd
        connections:
            bbdd:
                driver: pdo_mysql
                host: '%database_host%'
                port: '%database_port%'
                dbname: '%database_name%'
                user: '%database_user%'
                password: '%database_password%'
                charset: UTF8
            bbdd2:
                driver: pdo_mysql
                host: '%database_hostp%'
                port: '%database_portp%'
                dbname: '%database_namep%'
                user: '%database_userp%'
                password: '%database_passwordp%'
                charset: UTF8
            bbdd3:
                driver: pdo_mysql
                host: '%database_hostg%'
                port: '%database_portg%'
                dbname: '%database_nameg%'
                user: '%database_userg%'
                password: '%database_passwordg%'
                charset: UTF8

    orm:
        default_entity_manager: bbdd
        entity_managers:
            bbdd:
                connection: bbdd
                mappings:
                    AppBundle: ~
            bbdd2:
                connection: bbdd2
                mappings:
                    AppBundle: ~
        # auto_generate_proxy_classes: '%kernel.debug%'
        # naming_strategy: doctrine.orm.naming_strategy.underscore
        # auto_mapping: true

 

Y definidos los parámetros de conexión en parameters.yml

arameters:
    database_host: localhost
    database_port: 3306
    database_name: bbdd1
    database_user: bddd1
    database_password: pass1
    
    database_hostp: host.es
    database_portp: 3306
    database_namep: bbdd2
    database_userp: bbdd2
    database_passwordp: pass2
    
    database_hostg: localhost
    database_portg: 3306
    database_nameg: bbdd3
    database_userg: bbdd3
    database_passwordg: pass3

 

Doctrine, tablas sin clave principal en MySQL

Table ____ has no primary key. Doctrine does not support reverse engineering from tables that don’t have a primary key.

Asi que Doctrine no puede funcionar en tablas que no tienen clave principal. En MySQL, crear tablas sin PK siempre es una mala idea, pero, en algunos casos (o sistemas heredados) que no tienen PK en algunas tablas, aún puede usar Doctrine como ORM.

Sin embargo, de forma predeterminada (y creo que esto no cambiará) si su base de datos tiene tablas sin asignación de clave primaria simplemente no funcionará = /.

La forma más rápida de resolver esto es anular la clase de proveedor DatabaseDriver, en el espacio de nombres:

namespace Doctrine\ORM\Mapping\Driver

 

Editar el archivo vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/DatabaseDriver.php

 

// línea 287

// dejar el código como sigue:

if ( ! $table->hasPrimaryKey()) {
    //throw new MappingException(
    // "Table " . $table->getName() . " has no primary key. Doctrine does not ".
    // "support reverse engineering from tables that don't have a primary key."
    //);
}else{
    $pkColumns = $table->getPrimaryKey()->getColumns();
}

// línea 508

public function getTablePrimaryKeys(Table $table)

{

    // comentar todo y dejar lo siguiente:

    if( $table->hasPrimaryKey() ) //add this if to avoid fatalError
        return $table->getPrimaryKey()->getColumns();

}

 

Entonces podemos ejecutar:

$ php bin/console doctrine:mapping:convert annotation --em bbdd2 ./src/AppBundle/Resources/config/doctrine/metadata/orm --from-database --force

Una vez hecho, volvemos a dejar el archivo DatabaseDriver.php como estaba.

 

Fuente

La entrada Resuelve el error ORM de Doctrine con tablas sin clave principal en MySQL al mapear la base de datos. se publicó primero en 【Garber Informática】Soluciones Web.

]]>
https://garberinformatica.com/resuelve-error-orm-doctrine-tablas-sin-clave-principal-mysql-al-mapear-la-base-datos/feed/ 1