Si ya has utilizado SonataPage y SonataMedia, sabes lo poderosos que son para gestionar contenido y medios en tu sitio. En este artículo, voy a mostrarte cómo extender estas herramientas para añadir fácilmente etiquetas Open Graph a tus páginas para mejorar su compartición en redes sociales. ¿Por qué las etiquetas Open Graph? Las etiquetas Open Graph (OG) son meta-etiquetas que puedes agregar a tus páginas para definir títulos, descripciones, imágenes y otra información que se utilizará cuand...
En este artículo, aprenderemos a agregar un panel de administración sin entidades en un proyecto Symfony 6.2 usando Sonata Admin 5. Nuestra base de proyecto será crear una interfaz simple de carga de archivos. Pero podrías hacer cualquier aplicación. Incluso añadir texto simple. 1. Instalando Sonata Admin Bundle Si aún no has instalado Sonata Admin, puedes hacerlo con composer:
composer require sonata-project/admin-bundle
Te invitamos a navegar en nuestro sitio para instalar Sonata Admi...
Siguiendo el artículo escrito por Thomas Bourdin SYMFONY / SONATA: AÑADIENDO UNA FUNCIÓN DE CLONACIÓN A UN CRUD, vamos a mostrar cómo, de manera muy simple, podemos añadir acciones personalizadas a una interfaz. En el Tablero:
Pero también vamos a ver cómo personalizar de manera simples y genérica las acciones personalizadas del listado, el encabezado de su CRUD y finalmente cómo añadir acciones para el procesamiento por lotes. Para mi ejemplo, comencé con una tabla muy simple llamada...
Si tienes una necesidad específica de transformar datos entre el formulario y el registro de tu entidad y piensas que este código de transformación debería ubicarse en un servicio porque tiene más sentido, puedes utilizar el dataMapper utilizando la inyección de dependencias proporcionada por Symfony. ¿Pero cómo implementarlo?Un pequeño recordatorio sobre el DataMapper. Si estamos de acuerdo con la documentación oficial de Symfony respecto a DataMapper y DataTransformer, un dataMapper tiene l...
En este ejemplo, tomaremos el caso concreto de una interfaz simple que incluye múltiples elementos. Hemos elegido usar una tabla de "Proyectos" en la que asignaremos documentos. Por lo tanto, para un proyecto, podemos asignar varios documentos. Y para facilitar la administración, nos aseguraremos de que podamos gestionar nuestra interfaz anidada directamente dentro de la vista de edición de nuestro proyecto.Necesitamos crear el esquema. En primer lugar, importamos nuestro esquema actual en My...
Hemos visto en artículos anteriores cómo inicializar un proyecto Symfony 6 + Sonata 5 con multimedia y usuarios en un admin seguro. Luego, analizamos cómo gestionar las localizaciones de usuarios.Ahora veremos cómo instalar y gestionar clasificaciones. Procedemos con la instalación de la última versión hasta la fecha.
php8.1 composer.phar require sonata-project/classification-bundle:5.x-dev
Al parecer, tenemos un error de configuración.
Unrecognized option "media" under "sonata_clas...
En un artículo anterior vimos cómo instalar Symfony 6 + Sonata Admin 5 con gestión de usuarios y medios. Continuaremos con esta instalación con la configuración de idiomas y zonas horarias. Instalaremos intlBundle que permite gestionar la visualización localizada.
php8.1 composer.phar require sonata-project/intl-bundle
Aprovechamos esta oportunidad para agregar un campo de zona horaria y localidad al usuario.Para hacer esto, extenderemos userBundle y agregaremos un campo en el admin. Ex...
Aquí veremos cómo crear una segunda interfaz mientras la entidad ya está en uso en una interfaz CRUD.El problema con las interfaces generadas automáticamente es que utilizan el nombre de la entidad para construir las rutas.Si configuramos una segunda interfaz con una entidad que ya se está utilizando, terminaremos con la misma ruta que la primera.
Para abordar este problema, utilizaremos estos dos parámetros en nuestra clase de administración para sobrescribir los valores predeterminados.Sup...
Veremos cómo configurar una interfaz de administración multilingüe con un botón de selección de idioma (conmutador de idioma).Instalación de translationBundle
composer require sonata-project/translation-bundle
bin/console assets:install
El conmutador de idioma requiere un filtro twig específico.De lo contrario, obtendrás un error como:Unknown "language_name" filter.Luego, necesitas instalar estos dos paquetes
composer require twig/intl-extra
composer require twig/extra-bundle
bin/console cac...
Veremos cómo gestionar una interfaz de administración que se conecta a múltiples servidores.En nuestro ejemplo, hemos configurado un servidor MySQL predeterminado que gestiona nuestra interfaz de administración. Usuarios, medios, etc.Y hemos configurado un servidor PostgreSQL que contiene una tabla que deseamos gestionar.Podemos agregar tantos servidores como deseemos.Nuestro Servidor MySQLTradicionalmente hemos configurado una instancia de Symfony Sonata por defecto con una conexión clásica ...
Vamos a ver cómo explotar los tipos de campo Jsonb de PostgreSQL en una interfaz generada de Sonata.Comenzamos con el supuesto de que ya dominas los conceptos básicos de Symfony, Sonata y PostgreSQL.Primero, creemos una tabla simple en PostgreSQL que contendrá un campo Jsonb.
CREATE SEQUENCE public.table1_id_seq;
CREATE TABLE public.table1 (
id integer DEFAULT nextval('public.table1_id_seq'::regclass) NOT NULL,
var1 character varying(250),
var2 json...
Vamos a ver cómo podemos crear un tipo de campo personalizado. En nuestro ejemplo, queremos un campo que tenga el mismo renderizado que un campo de tipo MoneyType pero en el cual podamos agregar cualquier sufijo, ya que el campo de dinero solo acepta monedas. Sin embargo, en nuestro proyecto queremos usar kilogramos, meses o incluso kilómetros. En resumen, una gama completa de posibles tipos de datos.Comenzamos creando nuestra clase de Tipo:
<?php
// src/Form/Type/NumberSuffixType.php
na...
Una de las necesidades recurrentes de un proyecto web es la necesidad de parámetros globales para su aplicación. Generalmente, estos se almacenan en un archivo yml y eso es todo lo que necesitas. Pero se complica cuando el cliente pide poder tener control sobre ellos.¿Darles acceso FTP/SSH para modificarlos? No, definitivamente no. Especialmente si se trata de delegar esta tarea a un becario.Necesitarás proporcionarles una interfaz de administración con un formulario para poder modificar est...
En este artículo, veremos cómo crear una API REST con
FOS/RestBundle, incluyendo la autenticación y un generador de
documentación similar a Swagger.
Lista de paquetes
necesarios:friendsofsymfony/rest-bundle:
Ofrece un conjunto de herramientas para ayudar a desarrollar una
API RESTfulhttps://github.com/FriendsOfSymfony/FOSRestBundlejms/serializer-bundle:
Permite la serialización de objetos.https://packagist.org/packages/jms/serializer-bundlelexik/jwt-authenticati...
Sonata es un conjunto de paquetes para Symfony 4. Uno de ellos permite gestionar contenido de manera similar a WordPress.Hay poca documentación disponible en internet y por una buena razón, la instalación tiene errores y a las pocas personas que han lidiado con el rastreador de errores en GitHub, se les ha dicho sin rodeos que lean el manual (RTFM).Quedarse estancado con tal fracaso no es realmente mi estilo.Aquí está cómo instalar y configurar Sonata-Page-Bundle, con la instalación oficial ...
Aquí está la cadena de traducción que necesitas traducir al idioma del local 'es':
```
Las interfaces predeterminadas de Sonata son CRUDs. Esto es increíblemente práctico (de lo contrario, no lo usaríamos). Pero una administración no solo está compuesta de CRUDs. Aquí veremos cómo crear una página simple de exportación de datos, eliminando las vistas predeterminadas de las interfaces y creando las nuestras para gestionar nuestro botón de exportación.
1 – A...
Vamos a ver cómo construir una interfaz de administración compuesta por varias tablas que tienen relaciones de Muchos a Muchos.Revisemos nuestro ejemplo de una interfaz muchos a muchos disponible aquíTenemos una tabla de zonas, que está compuesta por varios elementos de la tabla de departamentos. En estos departamentos, tenemos agencias.Para rematar, y darle sentido a esta cadena de datos, añadimos una tabla zx_credential, que representa a los vendedores.Aquí está nuestra cadena de datos: Ven...
Desarrollaremos aquí todas las manipulaciones para construir una interfaz de muchos a muchos a través de Sonata.Tomaremos como ejemplo una gestión de zonas con una conexión por departamentos. Cada zona está así constituida por múltiples conexiones con la tabla de departamentos.En MysqlWorkbench, se ve así:
Para generar las entidades, utilizamos el siguiente comando:
php bin/console doctrine:mapping:import "App\Entity" annotation --path=src/Entity
...
En resumen, queremos crear una interfaz CRUD, 1N, con la cual, cuando estamos editando un elemento, agregamos un panel para gestionar todos los elementos hijos.Aquí tenemos una tabla wtype, con una tabla wconf que contiene una serie de registros vinculados a un elemento wtype.
Al igual que para el ejemplo de implementación de ordenable con arrastrar y soltar ( disponible aquí ) vamos a usar los siguientes componentes:pixassociates/sortable-behavior-bundle y stof/doctrine-ext...