0
votes

Comment utiliser VichuploaderBundle dans les champs Configure de CrudController

Les images ne sont pas économisées avec les paramètres ci-dessous

public function configureFields(string $pageName): iterable
    {
        return [
            ImageField::new('imageFile')->setBasePath('%app.path.product_images%'),
        ];
    }


0 commentaires

3 Réponses :


1
votes

Assurez-vous de modifier au moins 1 champ mappé de doctrine dans votre setter, sinon la doctrine ne doit pas expédier des événements. Voici un exemple de la DOCS:

/**
 * @ORM\Column(type="datetime")
 * @var \DateTime
 */
private $updatedAt;

public function setImageFile(File $image = null)
    {
        $this->imageFile = $image;

        // VERY IMPORTANT:
        // It is required that at least one field changes if you are using Doctrine,
        // otherwise the event listeners won't be called and the file is lost
        if ($image) {
            // if 'updatedAt' is not defined in your entity, use another property
            $this->updatedAt = new \DateTime('now');
        }
    }


4 commentaires

J'ai fait toutes les modifications nécessaires dans l'entité, mais le champ de formulaire dans Docs est configuré dans easy_admin.yaml, mais j'ai son propre fichier CrudController et je ne trouve pas comment configurer ce champ (comme - {Propriété: "ImageFile" , Tapez: 'vich_image'} )


Si je décharge ($ ceci) à l'intérieur SetImageFile, je vois -Image: "/ privatif / var / dossiers / 69 / 3TQ1CY1D29QDVNH49F7QGHB80000GP / t / pH pknxx8i" avec mauvais chemin, donc j'ai besoin de marquer ce champ comme type vich_image


J'ai upload_destination: '% kernel.project_dir% / public% app.path.prod.product_images%' dans vich_uploader.yaml et app.path.product_images: / téléchargements / images / produits / produits / produits dans services.YAML


@YuriInikytenko Votre code YAML est un exemple de Easy Admin 2.x, je pense que vous utilisez Easy Admin 3.x, qui n'utilise plus YAML CONFIG.



0
votes

Vous avez besoin de résoudre le paramètre d'abord.

au lieu de xxx

essayez xxx

Plus d'infos sur Obtenir le paramètre ici:

https://symfony.com/blog/new-in-symfony-4-1-geting-container-paramètres-as-a-service


0 commentaires

2
votes

Ceci fonctionne pour moi ...

Créez d'abord VICHIMAGEFIELD P>

public function configureFields(string $pageName): iterable
    {
        return [
           ImageField::new('imagename')->setBasePath($this->getParameter('app.path.product_images'))->onlyOnIndex(),
           VichImageField::new('imageFile')->hideOnIndex()
        ];
    }