Bonjour
J'ai installé dropzone sur un formaulaire de mon projet symfony 6.1
Les images sont bien uploadées sur le serveur.
Comme indiqué dans la doc
https://github.com/1up-lab/OneupUploaderBundle/blob/master/doc/custom_logic.md
j'ai créé un listener qui se déclenche a l'upload d'image, visant a insérer les données correspondant en base de données.
voici mon listener :
<?php
namespace App\EventListener;
use Oneup\UploaderBundle\Event\PostPersistEvent;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Doctrine\Persistence\ManagerRegistry;
use App\Entity\ProductImage;
use App\Repository\ProductImageRepository;
use App\Repository\ProductRepository;
class UploadListener extends AbstractController
{
public function onUpload(PostPersistEvent $event, ManagerRegistry $doctrine, ProductRepository $productRepository )
{
$entityManager = $doctrine->getManager();
$product = $productRepository ->findOneById(1);
$productImage = new ProductImage();
$productImage->setFilename('pwet');
$productImage->setProduct($product);
$productImage->setIsDefault(false);
$entityManager->persist($productImage);
$entityManager->flush();
//if everything went fine
$response = $event->getResponse();
$response['success'] = true;
return $response;
}
}
ce qui me retourne l'erreur suivante :
App\EventListener\UploadListener::onUpload(): Argument #2 ($doctrine) must be of type Doctrine\Persistence\ManagerRegistry, string given, called in /var/www/tst_app/vendor/symfony/event-dispatcher/Debug/WrappedListener.php on line 115
J'ai testé ce code dans un controller "classique" (une page web) et ça fonctionne correctement, mais pas dans le listener.
Quelqu'un voit ce qui cloche ?
Bonjour,
Utilise plutôt EntityManagerInterface
et déclare le dans le constructeur.
Puis renomme le "entitymanager" et non "doctrine" du coup
effectivement, ça marche mieux avec EntityManagerInterface !
par contre entre temps, j'ai fait differement, plutot que d'utiliser l'upload par defaut et un listener, j''utilise un formulaire personnalisé qui m'evite de devoir passer par ce listener :-)
En tout cas merci pour la rapidité et l'efficacité !
Aucun soucis. Oui je ne pense pas que le listener soit la meilleure solution pour ton cas. Après a voir avec plus de préçision. Bon courage.