Introdução
Symfony é um framework PHP que possui diversos recursos e ferramentas que auxiliam na criação de sistemas web, como gerenciadores de conteúdo, lojas virtuais, sistemas de avaliação, entre outros. Neste artigo, vamos abordar como criar um sistema de gerenciamento de imagens com Symfony.
Por que um sistema de gerenciamento de imagens?
Um sistema de gerenciamento de imagens é essencial em qualquer sistema web que apresente conteúdo visual. Ele permite que o usuário possa fazer upload de imagens, organizá-las em galerias, e exibí-las de forma dinâmica. Além disso, um sistema de gerenciamento de imagens também facilita a manutenção do sistema, pois todas as imagens ficam armazenadas em um único lugar.
Como criar um sistema de gerenciamento de imagens com Symfony?
Para criar um sistema de gerenciamento de imagens com Symfony, é necessário utilizar o bundle VichUploaderBundle. Este bundle torna o processo de upload de arquivos muito mais fácil e simples.
Vamos seguir os passos abaixo:
1. Instale o VichUploaderBundle através do Composer:
composer require vich/uploader-bundle
2. Configure o bundle no arquivo config/bundles.php
:
VichUploaderBundleVichUploaderBundle::class => ['all' => true],
3. Configure o upload de arquivos no arquivo config/packages/vich_uploader.yaml
:
“`
vich_uploader:
db_driver: orm
mappings:
gallery_image:
uri_prefix: /gallery/images
upload_destination: ‘%kernel.project_dir%/public/gallery/images’
namer: VichUploaderBundleNamingSmartUniqueNamer
“`
4. Crie a entidade GalleryImage que será responsável por armazenar as informações das imagens:
php bin/console make:entity GalleryImage
5. Adicione os campos de imagem na entidade criada:
“`
namespace AppEntity;
use DoctrineORMMapping as ORM;
use VichUploaderBundleMappingAnnotation as Vich;
/**
* @ORMEntity
* @VichUploadable
*/
class GalleryImage
{
// …
/**
* @var File|null
* @VichUploadableField(mapping=”gallery_image”, fileNameProperty=”imageName”, size=”imageSize”)
*/
private $imageFile;
/**
* @ORMColumn(type=”string”, length=255, nullable=true)
*/
private $imageName;
/**
* @ORMColumn(type=”integer”, nullable=true)
*/
private $imageSize;
// …
}
“`
6. Crie o formulário para upload de imagens:
php bin/console make:form GalleryImageType
7. Crie o controller para gerenciamento das galerias de imagens:
php bin/console make:controller GalleryController
8. Adicione as rotas para exibição das imagens na página:
“`
/**
* @Route(“/gallery”, name=”gallery”)
*/
public function index(): Response
{
$em = $this->getDoctrine()->getManager();
$galleryImages = $em->getRepository(GalleryImage::class)->findAll();
return $this->render(‘gallery/index.html.twig’, [
‘galleryImages’ => $galleryImages,
]);
}
/**
* @Route(“/gallery/show/{id}”, name=”gallery_show”)
*/
public function show(GalleryImage $galleryImage): Response
{
return $this->render(‘gallery/show.html.twig’, [
‘galleryImage’ => $galleryImage,
]);
}
“`
9. Exiba as imagens na página:
“`
{% for galleryImage in galleryImages %}
{% endfor %}
“`
Conclusão
Neste artigo, aprendemos como criar um sistema de gerenciamento de imagens com Symfony de forma simples e eficiente utilizando o VichUploaderBundle. Com isso, podemos ter um sistema robusto que permite o upload de imagens, organização de galerias e exibição das imagens de forma dinâmica.