diff --git a/src/Controller/ProjectController.php b/src/Controller/ProjectController.php
index 81a7e0d..356e74c 100644
--- a/src/Controller/ProjectController.php
+++ b/src/Controller/ProjectController.php
@@ -7,6 +7,7 @@
use App\Entity\ProjectEntity;
use App\Form\Project\ProjectAddForm;
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
+use App\Form\Project\ProjectEditForm;
class ProjectController extends AbstractExtendedController
{
@@ -75,8 +76,33 @@
throw new ResourceNotFoundException();
}
+ // Project edit form
+ /** @var ProjectEditForm $projectEditForm */
+ $projectEditForm = $this->createNamedCustomForm('projectEdit', ProjectEditForm::class);
+ $projectEditForm->handleRequest($request);
+ if($projectEditForm->isSubmitted() && $projectEditForm->isValid()) {
+ $errors = $projectEditForm->validate();
+ if (empty($errors)) {
+ $projectEditForm->updateProject($project);
+ $entityManager->persist($project);
+ $entityManager->flush();
+
+ return $this->ajaxFormAnswer([
+ 'refresh' => true,
+ ]);
+ }
+ return $this->ajaxFormAnswer([
+ 'error' => join('
', $errors),
+ 'code' => Response::HTTP_BAD_REQUEST,
+ ]);
+ }
+
+ // Update form
+ $projectEditForm->updateFields($project);
+
return $this->render("project/project.html.twig", [
'project' => $project,
+ 'projectEditForm' => $projectEditForm,
]);
}
}
\ No newline at end of file
diff --git a/src/Form/Project/ProjectEditForm.php b/src/Form/Project/ProjectEditForm.php
new file mode 100644
index 0000000..37fcf76
--- /dev/null
+++ b/src/Form/Project/ProjectEditForm.php
@@ -0,0 +1,68 @@
+form->setData([
+ 'name' => $project->getName(),
+ 'active' => $project->getActive(),
+ ]);
+
+ return $this;
+ }
+
+ /**
+ * Update entity from form data
+ *
+ * @param ProjectEntity $project
+ * @return self
+ */
+ public function updateProject(ProjectEntity $project): self
+ {
+ $data = $this->form->getData();
+
+ $project->setName($data['name']);
+ $project->setActive($data['active']);
+
+ return $this;
+ }
+
+ /**
+ *
+ * {@inheritdoc}
+ */
+ public function getTemplate(): string
+ {
+ return '_includes/html/form/project/edit.html.twig';
+ }
+
+ /**
+ *
+ * {@inheritdoc}
+ */
+ protected function addFields($formBuilder, $options): void
+ {
+ $formBuilder->add('name', TextType::class, [
+ 'required' => true
+ ])
+ ->add('active', CheckboxType::class, [
+ 'required' => false
+ ])
+ ->add('submit', SubmitType::class);
+ }
+}
\ No newline at end of file
diff --git a/templates/_includes/html/form/project/edit.html.twig b/templates/_includes/html/form/project/edit.html.twig
new file mode 100644
index 0000000..a46c399
--- /dev/null
+++ b/templates/_includes/html/form/project/edit.html.twig
@@ -0,0 +1,13 @@
+{{ form_start(form, {attr: {class: 'ajax-form'}}) }}
+