diff --git a/public/scripts/ajaxForm.js b/public/scripts/ajaxForm.js
index 9121fe1..8d539e8 100644
--- a/public/scripts/ajaxForm.js
+++ b/public/scripts/ajaxForm.js
@@ -9,7 +9,13 @@
// Refresh the page
if (data.refresh) {
- window.location.reload();
+ if (data.error == '' && data.message == '') {
+ window.location.reload();
+ } else {
+ setTimeout(function() {
+ window.location.reload();
+ }, 3000);
+ }
}
// Reset the form
@@ -20,13 +26,13 @@
// Update the form error
parent.querySelector('.form-error').innerHTML = data.error;
setTimeout(function() {
- parent.querySelector('.form-error').innerHTML = 0;
+ parent.querySelector('.form-error').innerHTML = '';
}, 3000);
-
+
// Update the form message
parent.querySelector('.form-message').innerHTML = data.message;
setTimeout(function() {
- parent.querySelector('.form-message').innerHTML = 0;
+ parent.querySelector('.form-message').innerHTML = '';
}, 3000);
}
diff --git a/src/Controller/ActorsController.php b/src/Controller/ActorsController.php
index 6f2b861..eb11017 100644
--- a/src/Controller/ActorsController.php
+++ b/src/Controller/ActorsController.php
@@ -8,6 +8,7 @@
use App\Entity\ActorEntity;
use App\Form\Actors\ActorDeleteForm;
use Symfony\Component\Routing\Generator\UrlGenerator;
+use App\Form\Actors\ActorEditForm;
class ActorsController extends AbstractExtendedController
{
@@ -103,26 +104,20 @@
// Get actor
$actor = $actorRepository->find($id);
- // Actor delete form
- /** @var ActorDeleteForm $actorDeleteForm */
- $actorDeleteForm = $this->createNamedCustomForm('actorDelete', ActorDeleteForm::class);
- $actorDeleteForm->handleRequest($request);
- if ($actorDeleteForm->isSubmitted() && $actorDeleteForm->isValid()) {
- $errors = $actorDeleteForm->validate();
+ // Actor edit form
+ /** @var ActorEditForm $actorEditForm */
+ $actorEditForm = $this->createNamedCustomForm('edit', ActorEditForm::class);
+ $actorEditForm->handleRequest($request);
+ if ($actorEditForm->isSubmitted() && $actorEditForm->isValid()) {
+ $errors = $actorEditForm->validate();
if (empty($errors)) {
- $actor = $actorDeleteForm->getActor($actorRepository);
- if (!is_null($actor)) {
- $entityManager->remove($actor);
- $entityManager->flush();
- return $this->ajaxFormAnswer([
- 'redirect' => $this->generateUrl('actors_actors', [], UrlGenerator::ABSOLUTE_PATH),
- ]);
- } else {
- return $this->ajaxFormAnswer([
- 'error' => 'Utilisateur non trouvé',
- 'code' => Response::HTTP_BAD_REQUEST,
- ]);
- }
+ $actorEditForm->updateActor($actor);
+ $entityManager->persist($actor);
+ $entityManager->flush();
+ return $this->ajaxFormAnswer([
+ 'message' => 'Modification enregistrées',
+ 'refresh' => true,
+ ]);
} else {
return $this->ajaxFormAnswer([
'error' => join('
', $errors),
@@ -131,8 +126,32 @@
}
}
+ // Actor delete form
+ /** @var ActorDeleteForm $actorDeleteForm */
+ $actorDeleteForm = $this->createNamedCustomForm('delete', ActorDeleteForm::class);
+ $actorDeleteForm->handleRequest($request);
+ if ($actorDeleteForm->isSubmitted() && $actorDeleteForm->isValid()) {
+ $errors = $actorDeleteForm->validate();
+ if (empty($errors)) {
+ $entityManager->remove($actor);
+ $entityManager->flush();
+ return $this->ajaxFormAnswer([
+ 'redirect' => $this->generateUrl('actors_actors', [], UrlGenerator::ABSOLUTE_PATH),
+ ]);
+ } else {
+ return $this->ajaxFormAnswer([
+ 'error' => join('
', $errors),
+ 'code' => Response::HTTP_BAD_REQUEST,
+ ]);
+ }
+ }
+
+ // Update fields
+ $actorEditForm->updateFields($actor);
+
return $this->render('actors/actor.html.twig', [
'actor' => $actor,
+ 'editForm' => $actorEditForm,
'deleteForm' => $actorDeleteForm,
]);
}
diff --git a/src/Entity/ActorEntity.php b/src/Entity/ActorEntity.php
index d52eadd..c529dd1 100644
--- a/src/Entity/ActorEntity.php
+++ b/src/Entity/ActorEntity.php
@@ -173,6 +173,6 @@
{
$this->active = $active;
- return $this->active;
+ return $this;
}
}
\ No newline at end of file
diff --git a/src/Form/Actors/ActorEditForm.php b/src/Form/Actors/ActorEditForm.php
new file mode 100644
index 0000000..1c63674
--- /dev/null
+++ b/src/Form/Actors/ActorEditForm.php
@@ -0,0 +1,75 @@
+form->setData([
+ 'firstName' => $actor->getFirstName(),
+ 'lastName' => $actor->getLastName(),
+ 'nickname' => $actor->getNickname(),
+ 'active' => $actor->getActive(),
+ ]);
+
+ return $this;
+ }
+
+ /**
+ * Update actor with the content
+ *
+ * @param ActorEntity $actor
+ * @return self
+ */
+ public function updateActor(ActorEntity $actor): self
+ {
+ $data = $this->form->getData();
+ $actor->setFirstName($data['firstName']);
+ $actor->setLastName($data['lastName']);
+ $actor->setNickname($data['nickname'] ?? "");
+ $actor->setActive($data['active']);
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getTemplate(): string
+ {
+ return '_includes/html/form/actors/edit.html.twig';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function addFields($formBuilder, $options): void
+ {
+ $formBuilder->add('firstName', TextType::class, [
+ 'required' => true
+ ])
+ ->add('lastName', TextType::class, [
+ 'required' => true
+ ])
+ ->add('nickname', TextType::class, [
+ 'required' => false
+ ])
+ ->add('active', CheckboxType::class, [
+ 'required' => false
+ ])
+ ->add('submit', SubmitType::class);
+ }
+}
\ No newline at end of file
diff --git a/templates/_includes/html/form/actors/edit.html.twig b/templates/_includes/html/form/actors/edit.html.twig
new file mode 100644
index 0000000..e0da1a7
--- /dev/null
+++ b/templates/_includes/html/form/actors/edit.html.twig
@@ -0,0 +1,21 @@
+{{ form_start(form, {attr: {class: 'ajax-form'}}) }}
+