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
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.
