Replace a picture in a profile

Viewed 66

In a profile of a user I can modify the information, add other images, delete an image etc ... but to replace an image I can not. I show you my codes: controller :

/**
 * @Route("/model/{id}/edit", name="model_edit", methods={"GET","POST"})
 * @param Request $request
 * @param Model $model
 * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response
 */
public function editModel(Request $request, Model $model)
{
    $form = $this->createForm(ModelType::class, $model);
    $form->handleRequest($request);
 
    if ($form->isSubmitted() && $form->isValid()) {
        $nameData = $form->getData();
        /** @var UploadedFile $modelFilesArray */
        $modelFilesArray = $form->get('images')->getData();
 
        foreach ($modelFilesArray as $modelFiles) {
            $imageModel = new ImageModel();
            $fileResult = $this->uploadAndDeleteFiles->upload($modelFiles, $this->getParameter('models_directory'), $nameData->getNameFolder());
 
            $imageModel->setAtl($fileResult['safeFilename']);
            $imageModel->setName($fileResult['fileName']);
            $model->addImage($imageModel);
        }
 
        $this->getDoctrine()->getManager()->flush();
        return $this->redirectToRoute('admin_index');
    }
 
    return $this->render('Admin/Model/edit.html.twig', [
        'model' => $model,
        'form' => $form->createView(),
    ]);
}

twig:

<div class="row">
    {{ form_start(form) }}
    <div class="col-md-7">
        <div class="row be-discovered-form-row">
            <div class="col-md-6">
                {{ form_row(form.name) }}
                {{ form_row(form.gender) }}
                {{ form_row(form.instagram) }}
            </div>
            <div class="col-md-6">
                <p>Ajoutez d'autres Photos:
                    <br><label for="model_images"></label>
                    <input type="text"
                           id="model_images"
                           name="model[images][]"
                           placeholder="Nombre de Photos"
                           class="form-group"
                    >
                    <a class="btn btn-default" id="filldetails" onclick="addFields()" style="cursor: pointer">ok</a>
                </p>
                <div id="addField"></div>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        {% for images in model.images %}
            <img src="{{ asset('assets/images/uploads/model/'~  model.nameFolder ~'/' ~  images.name) }}"
                 alt="{{ images.atl }}"><br>
            <a href="{{ path('image_model_delete', {'id':images.id}) }}" class="btn btn-danger"> Supprimer l'image</a>
            <br>
            Edit Image
            <input type="file" name="images">
            <br>
        {% endfor %}
    </div>
    <div class="col-md-1">
        <button class="btn btn-success">{{ button_label|default('Modifier') }}</button>
        <br><br>
        <a href="{{ path('admin_index') }}" class="btn btn-default">Retour a l'acceuil</a>
        <br>
        {{ form_end(form) }}
    </div>
</div>

<div class="col-md-3">
    {% for images in model.images %}
        <img src="{{ asset('assets/images/uploads/model/'~  model.nameFolder ~'/' ~  images.name) }}"
             alt="{{ images.atl }}"><br>
        <a href="{{ path('image_model_delete', {'id':images.id}) }}" class="btn btn-danger"> Supprimer l'image</a>
        <br>
        Edit Image
        <input type="file" name="model[images][]"> {# ou je souhaite modifier l'image#}
        <br>
    {% endfor %}
</div>

FormType:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name', TextType::class, [
            'label' => 'Nom'
        ])
        ->add('gender', ChoiceType::class, [
            'placeholder' => false,
            'choices' => [
                'Femme' => 'femme',
                'Homme' => 'homme'
            ]
        ])
        ->add('instagram')
        ->add('images', FileType::class, [
            'label' => false,
            'mapped' => false,
            'multiple' => true,
            'required' => false,
            'attr'=> ['style'=>'display:none;']
        ])
    ;
}

my concern is that I am looking for a way to recover an image and replace it

enter image description here

to explain how my project is structured, I have a User entity (which is named "Model") and in this entity I have a relation in another table "ModelImage" which stores a collection of images of a user. therefore by wanting to edit a precise image I want to replace a precise image by another.

0 Answers
Related